Exemplo n.º 1
0
/**
* 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;
}
Exemplo n.º 2
0
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);
}