Example #1
0
 private function proc($base, &$lines, $ext, $exc)
 {
     $fp = @opendir($base);
     while ($row = @readdir($fp)) {
         if (in_array($row, $exc) || preg_match('/.*~/i', $row)) {
             continue;
         }
         $dbase = $base . ($base != './' && $base != XFS ? '/' : '') . $row;
         if (@is_dir($dbase)) {
             $this->proc($dbase, $lines, $ext, $exc);
         }
         $f_ext = _extension($row);
         if (is_file($dbase)) {
             if (!isset($lines[$f_ext])) {
                 $lines[$f_ext] = 0;
             }
             $jj = 0;
             foreach (@file($dbase) as $i_line => $line) {
                 if ($p_line = strpos($line, 'TO' . 'DO')) {
                     if (!$jj) {
                         echo '<hr /><strong>' . $dbase . '</strong><br /><br />' . "\n";
                     }
                     echo $i_line + 1 . ' > ' . trim(substr($line, $p_line + 5)) . '<br />' . "\n";
                     $jj++;
                 }
             }
             $lines[$f_ext] += count(@file($dbase));
         }
     }
     @closedir($fp);
     return;
 }
Example #2
0
 private function proc($base, &$lines, $ext, $exc)
 {
     $fp = @opendir($base);
     while ($row = @readdir($fp)) {
         if (in_array($row, $exc) || preg_match('/.*~/', $row)) {
             continue;
         }
         $dbase = $base . ($base != './' ? '/' : '') . $row;
         if (@is_dir($dbase)) {
             $this->proc($dbase, $lines, $ext, $exc);
         }
         $f_ext = _extension($row);
         if (is_file($dbase)) {
             if (!isset($lines[$f_ext])) {
                 $lines[$f_ext] = 0;
             }
             $lines[$f_ext] += count(@file($dbase));
         }
     }
     @closedir($fp);
     return;
 }
Example #3
0
    protected function _create_home()
    {
        global $core, $user;
        if (_button() && is_ghost()) {
            $v = $this->__(array('cat' => 1, 'ticket_group' => 0, 'ticket_title', 'ticket_text', 'ticket_username', 'attachments'));
            $t_contact = $user->v();
            if (f($v['ticket_username']) && _auth_get('ticket_create_admin')) {
                if (!preg_match('#^([a-z0-9\\_\\-]+)$#is', $v['ticket_username'])) {
                    $this->_error('#SIGN_LOGIN_ERROR');
                }
                $sql = 'SELECT *
					FROM _members
					WHERE user_username = ?
						AND user_id <> 1
						AND user_active = 1';
                if (!($t_contact = _fieldrow(sql_filter($sql, $v['ticket_username'])))) {
                    $this->_error('#SIGN_LOGIN_ERROR');
                }
            }
            if (!($ticket_status = $core->cache_load('ticket_status_default'))) {
                $sql = 'SELECT status_id
					FROM _tickets_status
					WHERE status_default = 1';
                $ticket_status = $core->cache_store(_field($sql, 'status_id', 0));
            }
            $v2 = array('code' => substr(md5(unique_id()), 0, 8), 'childs' => 0, 'parent' => 0, 'deleted' => 0, 'lastreply' => (int) $user->time, 'group' => $v['ticket_group'], 'contact' => $t_contact['user_id'], 'aby' => 0, 'cat' => $v['cat'], 'status' => $ticket_status, 'start' => (int) $user->time, 'end' => 0, 'ip' => $user->i_ip, 'title' => $v['ticket_title'], 'text' => $v['ticket_text']);
            $sql = 'INSERT INTO _tickets' . _build_array('INSERT', prefix('ticket', $v2));
            $v['ticket_id'] = _sql_nextid($sql);
            $v = array_merge($v, $v2);
            if (f($v['attachments'])) {
                $attachments = explode(',', $v['attachments']);
                $location = XFS . 'space/f/';
                if (@is_dir($location)) {
                    @(include XFS . 'core/upload.php');
                    $upload = new upload();
                    $umask = umask(0);
                    $i = 0;
                    foreach ($attachments as $row) {
                        if (@file_exists($location . $row)) {
                            $extension = _extension($row);
                            if (preg_match('/\\.(' . $upload->ext_blacklist . ')$/', strtolower($row))) {
                                $extension = 'txt';
                            }
                            $filepath = _filename('_' . $v['code'] . '_' . $i, $extension);
                            @rename($location . $row, $location . $filepath);
                            $upload->chmod($location . $filepath);
                            $insert_attach = array('ticket' => $v['ticket_id'], 'name' => $filepath, 'mime' => mime_content_type($location . $filepath), 'extension' => $extension, 'size' => filesize($location . $filepath), 'checksum' => md5_file($location . $filepath), 'downloads' => 0, 'time' => time());
                            $sql = 'INSERT INTO _tickets_attach' . _build_array('INSERT', prefix('attach', $insert_attach));
                            _sql($sql);
                            $i++;
                        }
                    }
                    @umask($umask);
                }
            }
            if ($v['parent']) {
                $sql = 'UPDATE _tickets SET ticket_childs = ticket_childs + 1
					WHERE ticket_id = ?';
                _sql(sql_filter($sql, $v['ticket_parent']));
            }
            if (f($v['ticket_username'])) {
                $insert_note = array('ticket_id' => (int) $v['ticket_id'], 'user_id' => $user->v('user_id'), 'note_text' => _lang('TICKET_CREATE_STAFF'), 'note_time' => time(), 'note_cc' => 1);
                $sql = 'INSERT INTO _tickets_notes' . _build_array('INSERT', $insert_note);
                _sql($sql);
            }
            $sql = 'SELECT group_name, group_email
				FROM _groups
				WHERE group_id = ?';
            $d_group = _fieldrow(sql_filter($sql, $v['ticket_group']));
            $ticket_subject = entity_decode($d_group['group_name'] . ' [#' . $v['code'] . ']: ' . $v['ticket_title']);
            $ticket_message = entity_decode($v['text']);
            $sql = 'SELECT m.user_email
				FROM _groups_members gm, _members m
				WHERE gm.member_group = ?
					AND gm.member_mod = ?
					AND gm.member_uid = m.user_id
				ORDER BY m.user_email';
            $group_members = _rowset(sql_filter($sql, $v['group'], 1), false, 'user_email');
            //
            // Common email notification
            require_once XFS . 'core/emailer.php';
            $emailer = new emailer();
            $emailer_vars = array('USERNAME' => $t_contact['user_username'], 'FULLNAME' => entity_decode(_fullname($t_contact)), 'SUBJECT' => entity_decode($v['ticket_title']), 'MESSAGE' => $ticket_message, 'TICKET_URL' => _link($this->m(), array('x1' => 'view', 'code' => $v['code'])));
            $email_from = $d_group['group_email'] . '@' . $core->v('domain');
            $user_template = 'ticket_' . $d_group['group_email'];
            //
            // Notify ticket creator
            $emailer->from($email_from);
            $emailer->set_subject($ticket_subject);
            $emailer->use_template($user_template);
            $emailer->email_address($t_contact['user_email']);
            $emailer->set_decode(true);
            $emailer->assign_vars($emailer_vars);
            $emailer->send();
            $emailer->reset();
            //
            // Notify group mods
            $emailer->from($email_from);
            $emailer->use_template('ticket_tech');
            $emailer->set_subject($ticket_subject);
            foreach ($group_members as $i => $row) {
                $method = !$i ? 'email_address' : 'cc';
                $emailer->{$method}($row);
            }
            $emailer->set_decode(true);
            $emailer->assign_vars($emailer_vars);
            $emailer->send();
            $emailer->reset();
            return $this->e(_link($this->m(), array('x1' => 'view', 'code' => $v['code'])));
        }
        $sql = 'SELECT group_id, group_name
			FROM _groups
			ORDER BY group_name';
        _rowset_style($sql, 'groups');
        $sql = 'SELECT cat_id, cat_name
			FROM _tickets_cat
			WHERE cat_id > 0
				AND cat_group IN (??)
			GROUP BY cat_name
			ORDER BY cat_group, cat_name';
        if (!($cat = _rowset_style(sql_filter($sql, $user->auth_groups()), 'cat', 'cat'))) {
            _style('no_cat');
        }
        return v_style(array('CHANGE_USER' => sprintf(_lang('TICKET_CHANGE_USER'), _fullname($user->v()))));
    }
Example #4
0
 public function process($filepath, $files, $extension, $filesize, $safe = true)
 {
     $umask = umask(0);
     if (!($files = $this->_merge($files))) {
         return $this->error('UPLOAD_NO_FILES');
     }
     foreach ($files as $i => $row) {
         $row['extension'] = _extension($row['name']);
         $row['name'] = strtolower($row['name']);
         if (!in_array($row['extension'], $extension)) {
             return $this->error(sprintf(_lang('UPLOAD_INVALID_EXT'), $row['name']), $row['filepath']);
         } elseif ($safe && preg_match('/\\.(' . $this->ext_blacklist . ')$/', $row['name'])) {
             $row['extension'] = 'txt';
         } elseif ($row['size'] > $filesize) {
             return $this->error(sprintf(_lang('UPLOAD_TOO_BIG'), $row['name'], $filesize / 1048576), $row['filepath']);
         }
         $row['random_name'] = time() . '_' . substr(md5(unique_id()), 6);
         $row['filename'] = _filename($row['random_name'], $row['extension']);
         $row['filepath'] = $filepath . $row['filename'];
         if (!@move_uploaded_file($row['tmp_name'], $row['filepath'])) {
             return $this->error(sprintf(_lang('UPLOAD_FAILED'), $row['name']), $row['filepath']);
         }
         $this->chmod($row['filepath']);
         if (@filesize($row['filepath']) > $filesize) {
             return $this->error(sprintf(_lang('UPLOAD_TOO_BIG'), $row['name'], $filesize / 1048576), $row['filepath']);
         }
         $files[$i] = $row;
     }
     @umask($umask);
     return count($files) ? $files : false;
 }
Example #5
0
    protected function _create_home()
    {
        global $user;
        $v = $tree = $this->init();
        $z = $this->__(w('zmode'));
        if (_button()) {
            $v_ary = array('subject', 'content');
            if ($user->v('is_founder')) {
                $v_ary = array_merge($v_ary, array('node' => 0, 'parent' => 0, 'level' => 0, 'module' => 0, 'alias', 'child_hide' => 0, 'child_order', 'nav' => 0, 'nav_hide' => 0, 'css_parent' => 0, 'css_var', 'quickload' => 0, 'dynamic' => 0, 'tags', 'template', 'redirect', 'description', 'allow_comments' => 0, 'approve_comments' => 0, 'form' => 0, 'form_email', 'published', 'move'));
            }
            $v = $this->__($v_ary);
            /*
            $v = $this->__(array(
            	'node' => 0,
            	'parent' => 0,
            	'level' => 0,
            	'module' => 0,
            	'alias',
            	'child_hide' => 0,
            	'child_order',
            	'nav' => 0,
            	'nav_hide' => 0,
            	'css_parent' => 0,
            	'css_var',
            	'quickload' => 0,
            	'dynamic' => 0,
            	'tags',
            	'template',
            	'redirect',
            	'subject',
            	'content',
            	'description',
            	'allow_comments' => 0,
            	'approve_comments' => 0,
            	'form' => 0,
            	'form_email',
            	'published',
            	'move'
            ));
            */
            //
            $v['edited'] = time();
            foreach (w('node level parent module') as $row) {
                $v[$row] = $tree['tree_' . $row];
            }
            if ($z['zmode'] == 'create') {
                $v['parent'] = $tree['tree_id'];
                $v['level']++;
                if (!$v['node']) {
                    $v['node'] = $v['parent'];
                }
            }
            // Parse vars
            foreach ($v as $row_k => $row_v) {
                switch ($row_k) {
                    case 'subject':
                        $row_v = $this->html($row_v, 'strong');
                        break;
                    case 'content':
                        $row_v = $this->html($row_v);
                        break;
                    case 'alias':
                        $row_v = _alias($row_v, w('_'), '-');
                        break;
                    case 'checksum':
                        $row_v = _hash($v['content']);
                        break;
                    case 'published':
                        $row_v = dvar($row_v, date('d m Y'));
                        $e_date = explode(' ', $row_v);
                        $row_v = _timestamp($e_date[1], $e_date[0], $e_date[2]);
                        break;
                }
                $v[$row_k] = $row_v;
            }
            if ($z['zmode'] == 'modify' && $tree['tree_alias'] == 'home' && $v['alias'] != 'home') {
                $v['alias'] = 'home';
            }
            if (f($v['alias'])) {
                $sql = 'SELECT tree_id
					FROM _tree
					WHERE tree_alias = ?
						AND tree_id <> ?';
                if (_fieldrow(sql_filter($sql, $v['alias'], $tree['tree_id']))) {
                    $this->_error('#ALIAS_IN_USE');
                }
            }
            if ($z['zmode'] == 'modify') {
                if ($v['move']) {
                    $mv_field = !is_numb($v['move']) ? 'alias' : 'id';
                    $sql = 'SELECT *
						FROM _tree
						WHERE tree_?? = ?';
                    if ($mv_tree = _fieldrow(sql_filter($sql, $mv_field, $v['move']))) {
                        $mv_insert = array('module' => $mv_tree['module_id'], 'node' => $mv_tree['tree_node'], 'parent' => $mv_tree['tree_id'], 'level' => $mv_tree['tree_level'] + 1);
                        $sql = 'UPDATE _tree SET ' . _build_array('UPDATE', prefix('tree', $mv_insert)) . sql_filter('
							WHERE article_id = ?', $tree['tree_id']);
                        _sql($sql);
                        $sql = 'UPDATE _tree SET tree_childs = tree_childs - 1
							WHERE tree_id = ?';
                        _sql(sql_filter($sql, $tree['tree_parent']));
                        $sql = 'UPDATE _tree SET tree_childs = tree_childs + 1
							WHERE tree_id = ?';
                        _sql(sql_filter($sql, $mv_tree['tree_id']));
                    }
                }
                unset($v['move']);
                // Check input values against database
                foreach ($v as $row_k => $row_v) {
                    if ($tree['tree_' . $row_k] == $row_v) {
                        unset($v[$row_k]);
                    }
                }
                if (!(count($v) - 1)) {
                    unset($v['edited']);
                }
            } else {
                unset($v['move']);
            }
            //
            $u_tree = _rewrite($tree);
            if (count($v)) {
                if (isset($v['content']) && $v['content']) {
                    $v['content'] = str_replace(w('&lt; &gt;'), w('< >'), $v['content']);
                }
                if ($z['zmode'] == 'create') {
                    $sql = 'INSERT INTO _tree' . _build_array('INSERT', prefix('tree', $v));
                } else {
                    $sql = 'UPDATE _tree SET ' . _build_array('UPDATE', prefix('tree', $v)) . sql_filter('
						WHERE tree_id = ?', $tree['tree_id']);
                }
                _sql($sql);
                if ($z['zmode'] == 'create') {
                    $u_tree = f($v['alias']) ? $v['alias'] : _nextid();
                    $sql = 'UPDATE _tree
						SET tree_childs = tree_childs + 1
						WHERE tree_id = ?';
                    _sql(sql_filter($sql, $tree['tree_id']));
                }
            }
            redirect(_link($u_tree));
        }
        //
        // Show fieldset
        /*$v_fieldset = array(
        			'subject',
        			'content',
        			'description',
        			'alias',
        			'child_hide' => 0,
        			'child_order',
        			'nav' => 0,
        			'nav_hide' => 0,
        			'css_parent',
        			'css_var',
        			'quickload' => 0,
        			'dynamic' => 0,
        			'tags',
        			'template',
        			'redirect',
        			'allow_comments' => 0,
        			'approve_comments' => 0,
        			'form' => 0,
        			'form_email',
        			'published'
        		);
        		*/
        $v_fieldset = array('subject', 'content');
        if ($user->v('is_founder')) {
            $v_fieldset = array_merge($v_fieldset, array('description', 'alias', 'child_hide' => 0, 'child_order', 'nav' => 0, 'nav_hide' => 0, 'css_parent', 'css_var', 'quickload' => 0, 'dynamic' => 0, 'tags', 'template', 'redirect', 'allow_comments' => 0, 'approve_comments' => 0, 'form' => 0, 'form_email', 'published'));
        }
        $is_modify = $z['zmode'] == 'modify';
        foreach (_array_keys($v_fieldset, '') as $k => $row) {
            $name = 'tree_' . $k;
            $cp_lang = _lang('CP_' . $k);
            $value = $is_modify ? isset($v[$k]) ? $v[$k] : (isset($tree[$name]) ? $tree[$name] : '') : '';
            $checked = is_numb($row) && $is_modify && $tree[$name] ? ' checked="checked"' : '';
            if (f($value)) {
                switch ($k) {
                    case 'published':
                        $value = date('d m Y', $value);
                        break;
                }
            }
            $type = 'text';
            if (is_numb($row)) {
                $value = 1;
                $type = 'checkbox';
            }
            $tag = 'input';
            if ($k == 'content') {
                $tag = 'textarea';
            }
            _style('field', array('NAME' => $k, 'ID' => $k, 'TAG' => $tag, 'TYPE' => $type, 'VALUE' => $value, 'LANG' => $cp_lang, 'CHECKED' => $checked));
            if ($k == 'template') {
                $i = 0;
                $fp = @opendir('./style/custom/');
                while ($row_d = @readdir($fp)) {
                    if (_extension($row_d) != 'htm') {
                        continue;
                    }
                    if (!$i) {
                        _style('field.templated');
                        _style('field.templated.row', array('V' => '', 'FILE' => _lang('NONE')));
                    }
                    $v_file = str_replace('.htm', '', $row_d);
                    _style('field.templated.row', array('V' => $v_file, 'FILE' => $v_file));
                    $i++;
                }
                @closedir($fp);
            }
            //
        }
        $cp_format = !$is_modify ? 'CREATE' : 'MODIFY';
        v_style(array('CP_PAGE' => sprintf(_lang('CP_PAGE_' . $cp_format), $tree['tree_subject'])));
        return;
    }