Example #1
0
	function _edit_home() {
		global $user, $style;
		
		$v = $this->__(array('id' => 0));
		
		$sql = 'SELECT *
			FROM _email
			WHERE email_id = ?';
		
		$email = sql_fieldrow(sql_filter($sql, $v['id']));
		if (!$email = sql_fieldrow(sql_filter($sql, $v['id']))) {
			$this->e('El registro de email no existe.');
		}
		
		$v_fields = array('data', 'batch', 'gretting', 'from', 'from_address', 'subject', 'message');
		
		if (_button()) {
			$v = array_merge($v, $this->__($v_fields));
			
			$v['data'] = '_email_' . $v['data'];
			$v['message'] = str_replace(array('&lt;', '&gt;', '&quot;'), array('<', '>', '"'), $v['message']);
			
			$sql = 'UPDATE _email SET ??
				WHERE email_id = ?';
			sql_query(sql_filter($sql, sql_build('UPDATE', ksql('email', $v)), $v['id']));
			
			$this->e('El mensaje programado fue actualizado.');
		}
		
		$tables = sql_rowset('SHOW TABLES', false, false, false, MYSQL_NUM);
		
		$i = 0;
		foreach ($tables as $table) {
			$table = $table[0];
			$search = '_email_';
			
			if (preg_match('#' . $search . '#i', $table)) {
				if (!$i) {
					$style->assign_block_vars('tables', array());
				}
				
				$style->assign_block_vars('tables.row', array(
					'TABLE' => str_replace($search, '', $table))
				);
				
				$i++;
			}
		}
		
		$sv = array();
		foreach ($v_fields as $field) {
			$sv[strtoupper($field)] = $email['email_' . $field];
		}
		
		$this->as_vars($sv);
	}
Example #2
0
    function home()
    {
        global $core, $user, $style;
        $tree = $this->valid_tree();
        $v = $this->__(array('is_comment' => 0));
        // Comment posting enabled and form submitted.
        if ($v['is_comment'] && $this->submit) {
            if (!$tree['tree_allow_comments']) {
                _fatal();
            }
            $cv = $this->__(array('comment_username', 'comment_address', 'comment_website', 'comment_message', 'comment_security'));
            $comment_time = time();
            if (!$user->d('is_member')) {
                foreach ($cv as $cv_k => $cv_v) {
                    if (empty($cv_v)) {
                        $this->error('E_COMMENT_FILL_FIELDS');
                        break;
                    }
                }
                if (!$this->errors()) {
                    $sql = "SELECT comment_time\n\t\t\t\t\t\tFROM _comments\n\t\t\t\t\t\tWHERE comment_ip = '" . $this->_escape($user->ip) . "'\n\t\t\t\t\t\t\tAND comment_status = 0";
                    if ($row_flood = $this->_fieldrow($sql)) {
                        if ($comment_time - $row_flood['comment_time'] < 30) {
                            $this->error('E_COMMENT_FLOOD_TIME');
                        }
                    }
                }
                // CAPTCHA verification
                include XFS . 'core/xcf.php';
                $xcf = new captcha();
                if ($xcf->check($cv['comment_security']) === false) {
                    $cv['comment_security'] = '';
                    $this->error('E_COMMENT_INVALID_CAPTCHA');
                }
                unset($xcf);
            }
            if (!$this->errors()) {
                $approve_comments = !$user->d('is_member') ? $tree['tree_approve_comments'] : 1;
                $sql_insert = array('tree' => (int) $tree['tree_id'], 'uid' => (int) $user->d('user_id'), 'username' => $cv['comment_username'], 'email' => $cv['comment_address'], 'website' => $cv['comment_website'], 'ip' => $user->ip, 'status' => (int) $approve_comments, 'time' => (int) $comment_time, 'message' => $cv['comment_message']);
                $sql = 'INSERT INTO _comments' . $this->_build_array('INSERT', ksql('comment', $sql_insert));
                $this->_sql($sql);
                if ($approve_comments) {
                    $sql = 'UPDATE _tree SET tree_comments = tree_comments + 1
						WHERE tree_id = ' . (int) $tree['tree_id'];
                    $this->_sql($sql);
                }
                // Send new comment email notification for approval.
                if (!$approve_comments) {
                    unset($cv['comment_security']);
                    include XFS . 'core/emailer.php';
                    $emailer = new emailer();
                    $emailer->from($cv['comment_address']);
                    $emailer->use_template('comment_approval');
                    if (empty($tree['tree_form_email'])) {
                        $tree['tree_form_email'] = $core->v('default_comments_email');
                    }
                    foreach (explode(';', $tree['tree_form_email']) as $i => $row) {
                        $row_f = !$i ? 'email_address' : 'cc';
                        $emailer->{$row_f}($row);
                    }
                    $input = array();
                    foreach ($cv as $row_k => $row_v) {
                        if (empty($row_v)) {
                            continue;
                        }
                        if ($row_k == 'comment_message') {
                            $row_v = str_replace("\r\n", '<br />', $row_v);
                        }
                        $input[] = '&lt; ' . $row_v;
                    }
                    $emailer->assign_vars(array('U_APPROVAL' => _link($this->alias_id($tree), array('x1' => 'comments')), 'INPUT_FIELDS' => implode('<br /><br />', $input), 'FROM_USERNAME' => $cv['comment_username']));
                    $emailer->send();
                    $emailer->reset();
                }
                redirect(_link($this->alias_id($tree)));
            }
            if ($this->errors()) {
                if (is_ghost()) {
                    $this->e('!');
                }
                $style->assign_block_vars('comments_error', array('MESSAGE' => $this->get_errors()));
            }
        }
        //
        if (!empty($tree['tree_redirect'])) {
            if (preg_match('#^[a-z0-9\\-\\_]+$#is', $tree['tree_redirect'])) {
                $tree['tree_redirect'] = _link($tree['tree_redirect']);
            }
            redirect($tree['tree_redirect']);
        }
        //
        if ($tree['tree_parent']) {
            $sql = 'SELECT *
				FROM _tree
				WHERE tree_id = ' . (int) $tree['tree_parent'];
            $parent = $this->_fieldrow($sql);
            if ($tree['tree_level'] > 2) {
                $sql = 'SELECT *
					FROM _tree
					WHERE tree_id = ' . (int) $parent['tree_parent'];
                $subparent = $this->_fieldrow($sql);
            }
        }
        if ($tree['tree_node']) {
            $sql = 'SELECT *
				FROM _tree
				WHERE tree_id = ' . (int) $tree['tree_node'];
            $node = $this->_fieldrow($sql);
        }
        //
        if (@method_exists($this, 'cf_' . $this->alias_id($tree))) {
            $this->{'cf_' . $this->alias_id($tree)}($tree);
        }
        //
        $sql = 'SELECT *
			FROM _tree
			WHERE tree_parent = ' . (int) $tree['tree_id'] . '
				AND tree_child_hide = 0
			ORDER BY ' . $this->child_order($tree);
        $childs = $this->_rowset($sql);
        foreach ($childs as $i => $row) {
            if (!$i) {
                $sql = 'SELECT image_id, image_tree, image_extension
					FROM _images
					WHERE image_tree IN (' . implode(',', array_keys($childs)) . ')
					ORDER BY RAND()';
                $images_child = $this->_rowset($sql, 'tree_id');
                $style->assign_block_vars('tree_child', array('ORDER_URL' => _link($tree['tree_id'], array('order', 0, 0, 0, 0))));
            }
            $style->assign_block_vars('tree_child.row', array('ITEM' => $row['tree_id'], 'URL' => _link($this->alias_id($row)), 'SUBJECT' => $row['tree_subject'], 'CONTENT' => $row['tree_content'], 'EDITED' => $user->format_date($row['tree_edited']), 'IMAGE' => isset($images_child[$row['tree_id']]) ? $images_child[$row['tree_id']]['image_id'] . '.' . $images_child[$row['tree_id']]['image_extension'] : 'default.gif'));
        }
        // Comments
        if ($tree['tree_allow_comments'] && $tree['tree_comments']) {
            $sql = 'SELECT c.comment_id, c.comment_username, c.comment_website, c.comment_time, c.comment_message, m.user_username
				FROM _comments c, _members m
				WHERE c.comment_tree = ' . (int) $tree['tree_id'] . '
					AND c.comment_status = 1
					AND c.comment_uid = m.user_id
				ORDER BY c.comment_time DESC';
            $comments = $this->_rowset($sql);
            foreach ($comments as $i => $row) {
                if (!$i) {
                    $style->assign_block_vars('comments', array());
                }
                $style->assign_block_vars('comments.row', array('ID' => $row['comment_id'], 'SUSERNAME' => $row['user_username'], 'USERNAME' => $row['comment_username'], 'WEBSITE' => $row['comment_website'], 'TIME' => $user->format_date($row['comment_time']), 'MESSAGE' => str_replace("\n", '<br />', $row['comment_message'])));
            }
        }
        //
        if ($this->css_parent($tree)) {
            $sql = 'SELECT *
				FROM _tree
				WHERE tree_parent = ' . (int) $this->css_var($tree) . '
					AND tree_child_hide = 0
				ORDER BY ' . $this->child_order($tree);
            $childs_parent = $this->_rowset($sql);
            foreach ($childs_parent as $i => $row) {
                if (!$i) {
                    $sql = 'SELECT image_id, image_tree, image_extension
						FROM _images
						WHERE image_tree IN (' . implode(',', array_keys($childs_parent)) . ')
						ORDER BY RAND()';
                    $images_child_parent = $this->_rowset($sql, 'tree_id');
                    $style->assign_block_vars('tree_child', array('ORDER_URL' => _link($tree['tree_id'], array('order', 0, 0, 0, 0))));
                }
                $style->assign_block_vars('tree_child_parent.row', array('ITEM' => $row['tree_id'], 'URL' => _link($this->alias_id($row)), 'TITLE' => $row['tree_subject'], 'IMAGE' => isset($images_child_parent[$row['tree_id']]) ? $images_child_parent[$row['tree_id']]['image_id'] . '.' . $images_child_parent[$row['tree_id']]['image_extension'] : 'default.gif'));
            }
        }
        if ($tree['tree_downloads']) {
            $sql = 'SELECT *
				FROM _downloads
				WHERE download_tree = ' . (int) $tree['tree_id'] . '
				ORDER BY download_order';
            $downloads = $this->_rowset($sql);
            foreach ($downloads as $i => $row) {
                if (!$i) {
                    $style->assign_block_vars('downloads', array('ORDER_URL' => _link($tree['tree_id'], array('orderd', 0, 0, 0, 0))));
                }
                $style->assign_block_vars('downloads.row', array('ITEM' => $row['download_id'], 'DOWNLOAD' => _link('get', $row['download_alias'] . '.' . $row['download_extension']), 'TITLE' => $row['download_title']));
            }
        }
        //
        if ($tree['tree_form']) {
            $style->assign_block_vars('form', array('URL' => _link($this->alias_id($tree), 'form')));
        }
        $s_css_page = '';
        if (@file_exists('./style/css/_tree_' . $this->alias_id($tree) . '.css')) {
            $s_css_page = $this->alias_id($tree) . '/';
        } elseif ($this->css_parent($tree)) {
            if (empty($tree['tree_css_var'])) {
                $tree['tree_css_var'] = 'parent';
            }
            $ary_css_var = false;
            switch ($tree['tree_css_var']) {
                case 'parent':
                case 'subparent':
                case 'node':
                    $ary_css_var = ${$tree['tree_css_var']};
                    break;
                default:
                    if (is_numeric($tree['tree_css_var'])) {
                        $sql = 'SELECT *
							FROM _tree
							WHERE tree_id = ' . (int) $tree['tree_css_var'];
                        if ($css_var_row = $this->_fieldrow($sql)) {
                            $ary_css_var = $css_var_row;
                        }
                    }
                    break;
            }
            if ($ary_css_var !== false) {
                $s_css_page = $this->alias_id($ary_css_var) . '/';
            }
        }
        //$tree['tree_content'] = $this->parse($tree['tree_content']);
        $tv = array('ADI' => $core->v('address') . 'container/images/a_' . ($this->css_parent($tree) ? $this->css_var($tree) : $tree['tree_id']) . '/', 'V_TREE' => $tree['tree_id'], 'V_CSS' => $s_css_page, 'V_SUBJECT' => $tree['tree_subject'], 'V_CONTENT' => $tree['tree_content'], 'V_COMMENTS' => $tree['tree_comments'], 'V_ALLOW_COMMENTS' => $tree['tree_allow_comments'], 'U_COMMENTS' => _link($this->alias_id($tree)), 'U_XCF' => _link($this->alias_id($tree) . '-xs.jpg', false, false));
        $this->as_vars($tv);
        $tree['tree_subject'] = strip_tags($tree['tree_subject']);
        //
        if ($tree['tree_alias'] != 'home') {
            if ($node['tree_id'] != $parent['tree_id']) {
                $this->navigation($node['tree_subject'], $this->alias_id($node));
            }
            if ($tree['tree_level'] > 2) {
                if ($parent['tree_id'] && $node['tree_id'] && $tree['tree_level'] > 3) {
                    $this->navigation('...');
                }
                $this->navigation($subparent['tree_subject'], $this->alias_id($subparent));
            }
            if ($parent['tree_id']) {
                $this->navigation($parent['tree_subject'], $this->alias_id($parent));
            }
            $this->navigation($tree['tree_subject'], $this->alias_id($tree));
        }
        if ($user->d('is_member')) {
            $i = 0;
            $auth_tree = array('create', 'modify', 'remove');
            foreach ($auth_tree as $row) {
                if ($user->auth_get('cp_' . $row)) {
                    if (!$i) {
                        $style->assign_block_vars('auth', array());
                    }
                    $lang = 'CP_AUTH_' . strtoupper($row);
                    $style->assign_block_vars('auth.row', array('U_LINK' => _link('cp', array($row, $this->alias_id($tree, false, false, false))), 'V_NAME' => _lang($lang)));
                    $i++;
                }
            }
        }
        //
        $this->template = 'tree';
        if (!empty($tree['tree_template']) && @file_exists('./style/pages/' . $tree['tree_template'] . '.htm')) {
            $this->template = 'pages/' . $tree['tree_template'];
        }
        // TODO: 304 header response
        header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $tree['tree_edited']) . ' GMT');
        return;
    }