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; }
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; }
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())))); }
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; }
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('< >'), 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; }