function addSlice($I_ID, $module_id) { global $REX, $I18N; $MOD = new rex_sql(); $MOD->setQuery("SELECT * FROM " . $REX['TABLE_PREFIX'] . "module WHERE id={$module_id}"); if ($MOD->getRows() != 1) { $slice_content = rex_warning($I18N->msg('module_doesnt_exist')); } else { $slice_content = ' <a name="addslice"></a> <form action="index.php#slice' . $I_ID . '" method="post" id="REX_FORM" enctype="multipart/form-data"> <fieldset> <legend class="rex-lgnd">' . $I18N->msg('add_block') . '</legend> <input type="hidden" name="article_id" value="' . $this->article_id . '" /> <input type="hidden" name="page" value="content" /> <input type="hidden" name="mode" value="' . $this->mode . '" /> <input type="hidden" name="slice_id" value="' . $I_ID . '" /> <input type="hidden" name="function" value="add" /> <input type="hidden" name="module_id" value="' . $module_id . '" /> <input type="hidden" name="save" value="1" /> <input type="hidden" name="clang" value="' . $this->clang . '" /> <input type="hidden" name="ctype" value="' . $this->ctype . '" /> <p class="rex-cnt-mdl-name"> ' . $I18N->msg("module") . ': <span>' . htmlspecialchars($MOD->getValue("name")) . '</span> </p> <div class="rex-cnt-slc-ipt"><div class="rex-cnt-slc-ipt2"> ' . $MOD->getValue("eingabe") . ' </div></div> <p class="rex-sbmt"> <input type="submit" name="btn_save" value="' . $I18N->msg('add_block') . '"' . rex_accesskey($I18N->msg('add_block'), $REX['ACKEY']['SAVE']) . ' /> </p> </fieldset> </form> '; // Beim Add hier die Meldung ausgeben if ($this->slice_id == 0 && $this->message != '') { echo rex_warning($this->message); } $dummysql = new rex_sql(); // Den Dummy mit allen Feldern aus rex_article_slice füllen $slice_fields = new rex_sql(); $slice_fields->setQuery('SELECT * FROM ' . $REX['TABLE_PREFIX'] . 'article_slice LIMIT 1'); foreach ($slice_fields->getFieldnames() as $fieldname) { switch ($fieldname) { case 'clang': $def_value = $this->clang; break; case 'ctype': $def_value = $this->ctype; break; case 'modultyp_id': $def_value = $module_id; break; case 'article_id': $def_value = $this->article_id; break; case 'id': $def_value = 0; break; default: $def_value = ''; } $dummysql->setValue($REX['TABLE_PREFIX'] . 'article_slice.' . $fieldname, $def_value); } $slice_content = $this->replaceVars($dummysql, $slice_content); } return $slice_content; }
function addSlice($I_ID, $module_id) { global $REX, $I18N; $MOD = new rex_sql(); $MOD->setQuery("SELECT * FROM " . $REX['TABLE_PREFIX'] . "module WHERE id={$module_id}"); if ($MOD->getRows() != 1) { $slice_content = rex_warning($I18N->msg('module_doesnt_exist')); } else { $slice_content = ' <a name="addslice"></a> <div class="rex-form rex-form-content-editmode-add-slice"> <form action="index.php#slice' . $I_ID . '" method="post" id="REX_FORM" enctype="multipart/form-data"> <fieldset class="rex-form-col-1"> <legend><span>' . $I18N->msg('add_block') . '</span></legend> <input type="hidden" name="article_id" value="' . $this->article_id . '" /> <input type="hidden" name="page" value="content" /> <input type="hidden" name="mode" value="' . $this->mode . '" /> <input type="hidden" name="slice_id" value="' . $I_ID . '" /> <input type="hidden" name="function" value="add" /> <input type="hidden" name="module_id" value="' . $module_id . '" /> <input type="hidden" name="save" value="1" /> <input type="hidden" name="clang" value="' . $this->clang . '" /> <input type="hidden" name="ctype" value="' . $this->ctype . '" /> <div class="rex-content-editmode-module-name"> <h3 class="rex-hl4"> ' . $I18N->msg("module") . ': <span>' . htmlspecialchars($MOD->getValue("name")) . '</span> </h3> </div> <div class="rex-form-wrapper"> <div class="rex-form-row"> <div class="rex-content-editmode-slice-input"> <div class="rex-content-editmode-slice-input-2"> ' . $MOD->getValue("eingabe") . ' </div> </div> </div> </div> </fieldset> <fieldset class="rex-form-col-1"> <div class="rex-form-wrapper"> <div class="rex-form-row"> <p class="rex-form-col-a rex-form-submit"> <input class="rex-form-submit" type="submit" name="btn_save" value="' . $I18N->msg('add_block') . '"' . rex_accesskey($I18N->msg('add_block'), $REX['ACKEY']['SAVE']) . ' /> </p> </div> </div> </fieldset> </form> </div> <script type="text/javascript"> <!-- jQuery(function($) { $(":input:visible:enabled:not([readonly]):first", $("form#REX_FORM")).focus(); }); //--> </script>'; // Beim Add hier die Meldung ausgeben if ($this->slice_id == 0) { if ($this->warning != '') { echo rex_warning($this->warning); } if ($this->info != '') { echo rex_info($this->info); } } $dummysql = new rex_sql(); // Den Dummy mit allen Feldern aus rex_article_slice füllen $slice_fields = new rex_sql(); $slice_fields->setQuery('SELECT * FROM ' . $REX['TABLE_PREFIX'] . 'article_slice LIMIT 1'); foreach ($slice_fields->getFieldnames() as $fieldname) { switch ($fieldname) { case 'clang': $def_value = $this->clang; break; case 'ctype': $def_value = $this->ctype; break; case 'modultyp_id': $def_value = $module_id; break; case 'article_id': $def_value = $this->article_id; break; case 'id': $def_value = 0; break; default: $def_value = ''; } $dummysql->setValue($REX['TABLE_PREFIX'] . 'article_slice.' . $fieldname, $def_value); } $slice_content = $this->replaceVars($dummysql, $slice_content); } return $slice_content; }
/** * Erstellt eine Clang * * @param $id Id der Clang * @param $name Name der Clang */ function rex_addCLang($id, $name) { global $REX; $REX['CLANG'][$id] = $name; $content = "// --- DYN\n\r"; foreach ($REX['CLANG'] as $cur => $val) { $content .= "\n\r\$REX['CLANG']['{$cur}'] = \"{$val}\";"; } $content .= "\n\r// --- /DYN"; $file = $REX['INCLUDE_PATH'] . "/clang.inc.php"; $h = fopen($file, "r"); $fcontent = fread($h, filesize($file)); $fcontent = ereg_replace("(\\/\\/.---.DYN.*\\/\\/.---.\\/DYN)", $content, $fcontent); fclose($h); $h = fopen($file, "w+"); fwrite($h, $fcontent, strlen($fcontent)); fclose($h); @chmod($file, 0777); $add = new rex_sql(); $add->setQuery("select * from " . $REX['TABLE_PREFIX'] . "article where clang='0'"); $fields = $add->getFieldnames(); $adda = new rex_sql(); // $adda->debugsql = 1; for ($i = 0; $i < $add->getRows(); $i++) { $adda->setTable($REX['TABLE_PREFIX'] . "article"); foreach ($fields as $key => $value) { if ($value == 'pid') { echo ''; } else { if ($value == 'clang') { $adda->setValue('clang', $id); } else { if ($value == 'status') { $adda->setValue('status', '0'); } else { $adda->setValue($value, rex_addslashes($add->getValue($value))); } } } } $adda->insert(); $add->next(); } $add = new rex_sql(); $add->setQuery("insert into " . $REX['TABLE_PREFIX'] . "clang set id='{$id}',name='{$name}'"); // ----- EXTENSION POINT rex_register_extension_point('CLANG_ADDED', '', array('id' => $id, 'name' => $name)); rex_generateAll(); }
/** * Erstellt eine Clang * * @param $id Id der Clang * @param $name Name der Clang */ function rex_addCLang($id, $name) { global $REX; $REX['CLANG'][$id] = $name; $content = ""; foreach ($REX['CLANG'] as $cur => $val) { $content .= "\$REX['CLANG']['{$cur}'] = \"{$val}\";\n"; } $file = $REX['INCLUDE_PATH'] . "/clang.inc.php"; rex_replace_dynamic_contents($file, $content); $add = new rex_sql(); $add->setQuery("select * from " . $REX['TABLE_PREFIX'] . "article where clang='0'"); $fields = $add->getFieldnames(); $adda = new rex_sql(); // $adda->debugsql = 1; for ($i = 0; $i < $add->getRows(); $i++) { $adda->setTable($REX['TABLE_PREFIX'] . "article"); foreach ($fields as $key => $value) { if ($value == 'pid') { echo ''; } else { if ($value == 'clang') { $adda->setValue('clang', $id); } else { if ($value == 'status') { $adda->setValue('status', '0'); } else { $adda->setValue($value, rex_addslashes($add->getValue($value))); } } } } $adda->insert(); $add->next(); } $add = new rex_sql(); $add->setQuery("insert into " . $REX['TABLE_PREFIX'] . "clang set id='{$id}',name='{$name}'"); // ----- EXTENSION POINT rex_register_extension_point('CLANG_ADDED', '', array('id' => $id, 'name' => $name)); rex_generateAll(); }
/** * CLASS Function: * Returns an Array containing article field names */ function getClassVars() { static $vars = array(); if (empty($vars)) { global $REX; $vars = array(); $file = $REX['INCLUDE_PATH'] . '/generated/articles/' . $REX['START_ARTICLE_ID'] . '.0.article'; if ($REX['GG'] && file_exists($file)) { // Im GetGenerated Modus, die Spaltennamen aus den generated Dateien holen include_once $file; // da getClassVars() eine statische Methode ist, können wir hier nicht mit $this->getId() arbeiten! $genVars = OORedaxo::convertGeneratedArray($REX['ART'][$REX['START_ARTICLE_ID']], 0); unset($genVars['article_id']); unset($genVars['last_update_stamp']); foreach ($genVars as $name => $value) { $vars[] = $name; } } else { // Im Backend die Spalten aus der DB auslesen / via EP holen $sql = new rex_sql(); $sql->setQuery('SELECT * FROM ' . $REX['TABLE_PREFIX'] . 'article LIMIT 0'); foreach ($sql->getFieldnames() as $field) { $vars[] = $field; } } } return $vars; }
$field =& $form->addSelectField('url_table'); $field->setLabel($I18N->msg('a724_table')); $field->setAttribute('onchange', 'url_table(this);'); $field->setAttribute('style', 'width: ' . $select_w4 . 'px;'); $select =& $field->getSelect(); $select->setSize(1); $select->addOption($I18N->msg('a724_no_table_selected'), ''); $sql = new rex_sql(); $tables = $sql->getArray("SHOW TABLES"); $cols = array(); foreach ($tables as $key => $value) { $select->addOption(current($value), current($value)); $sqlf = new rex_sql(); // $sqlf->setDebug(true); $sqlf->setQuery('SELECT * FROM ' . current($value)); $fieldnames = $sqlf->getFieldnames(); foreach ($fieldnames as $fieldname) { $fields[current($value)][] = $fieldname; } } $script = ' <script type="text/javascript"> <!-- (function($) { var currentShown = null; $("#' . $field->getAttribute('id') . '").change(function(){ if(currentShown) currentShown.hide(); var effectParamsId = "#rex-"+ jQuery(this).val(); currentShown = $(effectParamsId);
/** * Erstellt eine Clang * * @param $id Id der Clang * @param $name Name der Clang * * @return TRUE bei Erfolg, sonst FALSE */ function rex_addCLang($id, $name) { global $REX; if (isset($REX['CLANG'][$id])) { return FALSE; } $REX['CLANG'][$id] = $name; $file = $REX['INCLUDE_PATH'] . "/clang.inc.php"; rex_replace_dynamic_contents($file, "\$REX['CLANG'] = " . var_export($REX['CLANG'], TRUE) . ";\n"); $add = new rex_sql(); $add->setQuery("select * from " . $REX['TABLE_PREFIX'] . "article where clang='0'"); $fields = $add->getFieldnames(); $adda = new rex_sql(); // $adda->debugsql = 1; for ($i = 0; $i < $add->getRows(); $i++) { $adda->setTable($REX['TABLE_PREFIX'] . "article"); foreach ($fields as $key => $value) { if ($value == 'pid') { echo ''; } else { if ($value == 'clang') { $adda->setValue('clang', $id); } else { if ($value == 'status') { $adda->setValue('status', '0'); } else { $adda->setValue($value, $add->escape($add->getValue($value))); } } } } $adda->insert(); $add->next(); } $add = new rex_sql(); $add->setQuery("insert into " . $REX['TABLE_PREFIX'] . "clang set id='{$id}',name='{$name}'"); // ----- EXTENSION POINT rex_register_extension_point('CLANG_ADDED', '', array('id' => $id, 'name' => $name)); return TRUE; }
/** * Kopieren eines Artikels von einer Kategorie in eine andere * * @param int $id ArtikelId des zu kopierenden Artikels * @param int $to_cat_id KategorieId in die der Artikel kopiert werden soll * * @return boolean FALSE bei Fehler, sonst die Artikel Id des neue kopierten Artikels */ function rex_copyArticle($id, $to_cat_id) { global $REX; $id = (int) $id; $to_cat_id = (int) $to_cat_id; $new_id = ''; // Artikel in jeder Sprache kopieren foreach ($REX['CLANG'] as $clang => $clang_name) { // validierung der id & from_cat_id $from_sql = new rex_sql(); $qry = 'select * from ' . $REX['TABLE_PREFIX'] . 'article where clang="' . $clang . '" and id="' . $id . '"'; $from_sql->setQuery($qry); if ($from_sql->getRows() == 1) { // validierung der to_cat_id $to_sql = new rex_sql(); $to_sql->setQuery('select * from ' . $REX['TABLE_PREFIX'] . 'article where clang="' . $clang . '" and startpage=1 and id="' . $to_cat_id . '"'); if ($to_sql->getRows() == 1 || $to_cat_id == 0) { if ($to_sql->getRows() == 1) { $path = $to_sql->getValue('path') . $to_sql->getValue('id') . '|'; $catname = $to_sql->getValue('name'); } else { // In RootEbene $path = '|'; $catname = $from_sql->getValue("name"); } $art_sql = new rex_sql(); $art_sql->setTable($REX['TABLE_PREFIX'] . 'article'); if ($new_id == "") { $new_id = $art_sql->setNewId('id'); } $art_sql->setValue('id', $new_id); // neuen auto_incrment erzwingen $art_sql->setValue('re_id', $to_cat_id); $art_sql->setValue('path', $path); $art_sql->setValue('catname', $art_sql->escape($catname)); $art_sql->setValue('catprior', 0); $art_sql->setValue('prior', 99999); // Artikel als letzten Artikel in die neue Kat einfügen $art_sql->setValue('status', 0); // Kopierter Artikel offline setzen $art_sql->setValue('startpage', 0); $art_sql->addGlobalCreateFields(); // schon gesetzte Felder nicht wieder überschreiben $dont_copy = array('id', 'pid', 're_id', 'catname', 'catprior', 'path', 'prior', 'status', 'createdate', 'createuser', 'startpage'); foreach (array_diff($from_sql->getFieldnames(), $dont_copy) as $fld_name) { $art_sql->setValue($fld_name, $art_sql->escape($from_sql->getValue($fld_name))); } $art_sql->setValue("clang", $clang); $art_sql->insert(); // ArticleSlices kopieren rex_copyContent($id, $new_id, $clang, $clang); // Prios neu berechnen rex_newArtPrio($to_cat_id, $clang, 1, 0); } else { return false; } } else { return false; } } // Caches des Artikels löschen, in allen Sprachen rex_deleteCacheArticle($id); // Caches der Kategorien löschen, da sich derin befindliche Artikel geändert haben rex_deleteCacheArticle($to_cat_id); return $new_id; }