/** * Assign vars to Smarty var, then this var can be used as index of the resource * @param int Id of the section parent * @param int Jumps (level) * @param object Resource (owner) * @param string Smarty var to append * @param string Index number to add (eg. 1.1) * @param bool Indicates if the array will be assigned to Smarty var or not * @param array Reference to an array for fill. * @return empty */ function assignSectionTree($parent = 0, $jumps = 0, AHResource $res, $var = 'index', $number = '', $assign = true, &$array = null) { global $tpl; $db = XoopsDatabaseFactory::getDatabaseConnection(); if (get_class($res) != 'AHResource') { return; } $sql = "SELECT * FROM " . $db->prefix("pa_sections") . " WHERE " . ($res->id() > 0 ? "id_res='" . $res->id() . "' AND" : '') . "\n\t\t\tparent='{$parent}' ORDER BY `order`"; $result = $db->query($sql); $sec = new AHSection(); $i = 1; // Counter $num = 1; while ($row = $db->fetchArray($result)) { $sec->assignVars($row); $link = ah_make_link($res->nameId() . '/' . $sec->nameId()); if ($assign) { $tpl->append($var, array('title' => $sec->title(), 'nameid' => $sec->nameId(), 'jump' => $jumps, 'link' => $link, 'number' => $jumps == 0 ? $num : ($number != '' ? $number . '.' : '') . $i)); } else { $array[] = array('title' => $sec->title(), 'nameid' => $sec->nameId(), 'jump' => $jumps, 'link' => $link, 'number' => $jumps == 0 ? $num : ($number != '' ? $number . '.' : '') . $i); } assignSectionTree($sec->id(), $jumps + 1, $res, $var, ($number != '' ? $number . '.' : '') . $i, $assign, $array); $i++; if ($jumps == 0) { $num++; } } return true; }
function saveEdit() { global $db, $util, $xoopsUser; foreach ($_POST as $k => $v) { ${$k} = $v; } if (!$util->validateToken()) { redirectMsg('edits.php?op=edit&id=' . $id, _AS_AH_SESSINVALID, 1); die; } if ($id <= 0) { redirectMsg('./edits.php', _AS_AH_NOID, 1); die; } $edit = new AHEdit($id); if ($edit->isNew()) { redirectMsg('./edits.php', _AS_AH_NOTEXISTS, 1); die; } $sec = new AHSection($edit->section()); if ($sec->isNew()) { redirectMsg('./edits.php', _AS_AH_NOTEXISTSSEC, 1); die; } //Comprueba que el título de la sección no exista $sql = "SELECT COUNT(*) FROM " . $db->prefix('pa_sections') . " WHERE title='{$title}' AND id_res='" . $sec->resource() . "' AND id_sec<>'" . $sec->id() . "'"; list($num) = $db->fetchRow($db->queryF($sql)); if ($num > 0) { redirectMsg('./edits.php?op=edit&id=' . $edit->id(), _AS_AH_ERRTITLE, 1); die; } //Genera $nameid Nombre identificador $found = false; $i = 0; do { $nameid = $util->sweetstring($title) . ($found ? $i : ''); $sql = "SELECT COUNT(*) FROM " . $db->prefix('pa_sections') . " WHERE nameid = '{$nameid}'"; list($num) = $db->fetchRow($db->queryF($sql)); if ($num > 0) { $found = true; $i++; } else { $found = false; } } while ($found == true); $sec->setTitle($title); $sec->setContent($content); $sec->setOrder($order); $sec->setNameId($nameid); $sec->setParent($parent); $sec->setVar('dohtml', isset($dohtml) ? 1 : 0); $sec->setVar('doxcode', isset($doxcode) ? 1 : 0); $sec->setVar('dobr', isset($dobr) ? 1 : 0); $sec->setVar('dosmiley', isset($dosmiley) ? 1 : 0); $sec->setVar('doimage', isset($dosmiley) ? 1 : 0); if (!isset($uid)) { $sec->setUid($xoopsUser->uid()); $sec->setUname($xoopsUser->uname()); } else { $xu = new XoopsUser($uid); if ($xu->isNew()) { $sec->setUid($xoopsUser->uid()); $sec->setUname($xoopsUser->uname()); } else { $sec->setUid($uid); $sec->setUname($xu->uname()); } } $sec->setModified(time()); if (!$sec->save()) { redirectMsg('edits.php', _AS_AH_DBERROR . '<br />' . $sec->errors(), 1); die; } $edit->delete(); redirectMsg('edits.php', _AS_AH_DBOK, 0); }