/** * center * * @since 1.2.1 * @deprecated 2.0.0 * * @package Redaxscript * @category Center * @author Henry Ruhs */ function center() { Redaxscript\Hook::trigger(__FUNCTION__ . '_start'); /* center break */ if (CENTER_BREAK == 1 || Redaxscript\Registry::get('centerBreak') == 1) { return; } else { routing(); } Redaxscript\Hook::trigger(__FUNCTION__ . '_end'); }
/** * migrate constants * * @since 2.1.0 * @deprecated 2.0.0 * * @package Redaxscript * @category Migrate * @author Henry Ruhs * @author Gary Aylward * * @return array */ function migrate_constants() { /* get user constants */ $constants = get_defined_constants(true); $constants_user = $constants['user']; /* process constants user */ foreach ($constants_user as $key => $value) { /* transform to camelcase */ $key = mb_convert_case($key, MB_CASE_TITLE); $key[0] = strtolower($key[0]); /* remove underline */ $key = str_replace('_', '', $key); /* store in array */ $output[$key] = $value; } $output = array_merge($output, Redaxscript\Registry::get()); return $output; }
/** * search post * * @since 1.2.1 * @deprecated 2.0.0 * * @package Redaxscript * @category Search * @author Henry Ruhs */ function search_post() { /* clean post */ if (ATTACK_BLOCKED < 10) { $search_terms = clean($_POST['search_terms'], 5); $table = clean($_POST['table']); } /* validate post */ if (strlen($search_terms) < 3 || $search_terms == l('search_terms')) { $error = l('input_incorrect'); } else { /* fetch result */ $result = Redaxscript\Db::forTablePrefix($table)->where('status', 1)->whereIn('language', array(Redaxscript\Registry::get('language'), ''))->whereLikeMany(array('title', 'description', 'keywords', 'text'), array('%' . $search_terms . '%', '%' . $search_terms . '%', '%' . $search_terms . '%', '%' . $search_terms . '%'))->orderByDesc('date')->findArray(); /* process result */ $num_rows = count($result); if (!$result) { $error = l('search_no'); } else { if ($result) { $accessValidator = new Redaxscript\Validator\Access(); $output = '<h2 class="title_content title_search_result">' . l('search') . '</h2>'; $output .= form_element('fieldset', '', 'set_search_result', '', '', '') . '<ol class="list_search_result">'; foreach ($result as $r) { $access = $r['access']; /* access granted */ if ($accessValidator->validate($access, MY_GROUPS) === Redaxscript\Validator\ValidatorInterface::PASSED) { if ($r) { foreach ($r as $key => $value) { ${$key} = stripslashes($value); } } /* prepare metadata */ if ($description == '') { $description = $title; } $date = date(s('date'), strtotime($date)); /* build route */ if ($table == 'categories' && $parent == 0 || $table == 'articles' && $category == 0) { $route = $alias; } else { $route = build_route($table, $id); } /* collect item output */ $output .= '<li class="item_search_result">' . anchor_element('internal', '', 'link_search_result', $title, $route, $description) . '<span class="date_search_result">' . $date . '</span></li>'; } else { $counter++; } } $output .= '</ol></fieldset>'; /* handle access */ if ($num_rows == $counter) { $error = l('access_no'); } } } } /* handle error */ if ($error) { notification(l('something_wrong'), $error); } else { echo $output; } }
/** * extras * * @since 1.2.1 * @deprecated 2.0.0 * * @package Redaxscript * @category Contents * @author Henry Ruhs * * @param mixed $filter */ function extras($filter = '') { if ($filter == '') { $output .= Redaxscript\Hook::trigger(__FUNCTION__ . '_start'); } /* query extras */ $extras = Redaxscript\Db::forTablePrefix('extras')->whereIn('language', array(Redaxscript\Registry::get('language'), '')); /* setup filter */ if (is_numeric($filter)) { $extras->where('rank', $filter); } else { if ($filter) { $extras->where('alias', $filter); } else { $extras->where('status', 1); } } $extras->orderByAsc('rank'); /* query result */ $result = $extras->findArray(); /* collect output */ if ($result) { $accessValidator = new Redaxscript\Validator\Access(); foreach ($result as $r) { $access = $r['access']; /* if access granted */ if ($accessValidator->validate($access, MY_GROUPS) === Redaxscript\Validator\ValidatorInterface::PASSED) { if ($r) { foreach ($r as $key => $value) { ${$key} = stripslashes($value); } } /* show if cagegory or article matched */ if ($category == CATEGORY || $article == ARTICLE || $category == 0 && $article == 0) { /* parser object */ $parser = new Redaxscript\Parser(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); $parser->init($text, $route, array('className' => array('break' => 'link_read_more', 'code' => 'box_code'))); /* collect headline output */ $output .= Redaxscript\Hook::trigger('extra_start', $r); if ($headline == 1) { $output .= '<h3 class="title_extra">' . $title . '</h3>'; } /* collect box output */ $output .= '<div class="box_extra">' . $parser->getOutput() . '</div>' . Redaxscript\Hook::trigger('extra_end', $r); /* prepend admin dock */ if (LOGGED_IN == TOKEN && FIRST_PARAMETER != 'logout') { $output .= admin_dock('extras', $id); } } } } } if ($filter == '') { $output .= Redaxscript\Hook::trigger(__FUNCTION__ . '_end'); } echo $output; }
/** * pagination * * @since 1.2.1 * @deprecated 2.0.0 * * @package Redaxscript * @category Contents * @author Henry Ruhs * * @param integer $sub_active * @param integer $sub_maximum * @param string $route */ function pagination($sub_active, $sub_maximum, $route) { $output = Redaxscript\Hook::trigger('paginationStart'); $output .= '<ul class="rs-list-pagination">'; /* collect first and previous output */ if ($sub_active > 1) { $first_route = $route; $previous_route = $route . '/' . ($sub_active - 1); $output .= '<li class="rs-item-first"><a href="' . Redaxscript\Registry::get('parameterRoute') . $first_route . '">' . Redaxscript\Language::get('first') . '</a></li>'; $output .= '<li class="rs-item-previous"><a href="' . Redaxscript\Registry::get('parameterRoute') . $previous_route . '" rel="previous">' . Redaxscript\Language::get('previous') . '</a></li>'; } /* collect center output */ $j = 2; if ($sub_active == 2 || $sub_active == $sub_maximum - 1) { $j++; } if ($sub_active == 1 || $sub_active == $sub_maximum) { $j = $j + 2; } for ($i = $sub_active - $j; $i < $sub_active + $j; $i++) { if ($i == $sub_active) { $j++; $output .= '<li class="rs-item-number rs-item-active"><span>' . $i . '</span></li>'; } else { if ($i > 0 && $i < $sub_maximum + 1) { $output .= '<li class="rs-item-number"><a href="' . Redaxscript\Registry::get('parameterRoute') . $route . '/' . $i . '">' . $i . '</a></li>'; } } } /* collect next and last output */ if ($sub_active < $sub_maximum) { $next_route = $route . '/' . ($sub_active + 1); $last_route = $route . '/' . $sub_maximum; $output .= '<li class="rs-item-next"><a href="' . Redaxscript\Registry::get('parameterRoute') . $next_route . '" rel="next">' . Redaxscript\Language::get('next') . '</a></li>'; $output .= '<li class="rs-item-last"><a href="' . Redaxscript\Registry::get('parameterRoute') . $last_route . '">' . Redaxscript\Language::get('last') . '</a></li>'; } $output .= '</ul>'; $output .= Redaxscript\Hook::trigger('paginationEnd'); echo $output; }
/** * templates list * * @since 1.2.1 * @deprecated 2.0.0 * * @package Redaxscript * @category Navigation * @author Henry Ruhs * * @param array $options */ function templates_list($options = '') { $output = Redaxscript\Hook::trigger(__FUNCTION__ . '_start'); /* define option variables */ if (is_array($options)) { foreach ($options as $key => $value) { $key = 'option_' . $key; ${$key} = $value; } } /* templates directory object */ $templates_directory = new Redaxscript\Directory(); $templates_directory->init('templates', array('admin', 'install')); $templates_directory_array = $templates_directory->getArray(); /* collect templates output */ foreach ($templates_directory_array as $value) { $class_string = ' class="template_' . $value; if ($value == Redaxscript\Registry::get('template')) { $class_string .= ' item_active'; } $class_string .= '"'; $output .= '<li' . $class_string . '>' . anchor_element('internal', '', '', $value, FULL_ROUTE . TEMPLATE_ROUTE . $value, '', 'rel="nofollow"') . '</li>'; } /* build id string */ if ($option_id) { $id_string = ' id="' . $option_id . '"'; } /* build class string */ if ($option_class) { $class_string = ' class="' . $option_class . '"'; } else { $class_string = ' class="list_templates"'; } /* collect list output */ if ($output) { $output = '<ul' . $id_string . $class_string . '>' . $output . '</ul>'; } $output .= Redaxscript\Hook::trigger(__FUNCTION__ . '_end'); echo $output; }
/** * extras * * @since 1.2.1 * @deprecated 2.0.0 * * @package Redaxscript * @category Contents * @author Henry Ruhs * * @param mixed $filter */ function extras($filter = '') { if ($filter == '') { $output .= Redaxscript\Hook::trigger(__FUNCTION__ . '_start'); } /* query extras */ $extras = Redaxscript\Db::forTablePrefix('extras')->whereIn('language', array(Redaxscript\Registry::get('language'), '')); /* has filter */ if ($filter) { $id = Redaxscript\Db::forTablePrefix('extras')->where('alias', $filter)->findOne()->id; /* handle sibling */ $sibling = Redaxscript\Db::forTablePrefix('extras')->where('id', $id)->findOne()->sibling; /* query sibling collection */ $sibling_array = Redaxscript\Db::forTablePrefix('extras')->whereIn('sibling', array($id, $sibling > 0 ? $sibling : null))->where('language', Redaxscript\Registry::get('language'))->select('id')->findArrayFlat(); /* process sibling array */ foreach ($sibling_array as $value) { $id_array[] = $value; } $id_array[] = $sibling; $id_array[] = $id; } else { $id_array = $extras->where('status', 1)->orderByAsc('rank')->select('id')->findArrayFlat(); } /* query result */ $result = $extras->whereIn('id', $id_array)->findArray(); /* collect output */ if ($result) { $accessValidator = new Redaxscript\Validator\Access(); foreach ($result as $r) { $access = $r['access']; /* access granted */ if ($accessValidator->validate($access, MY_GROUPS) === Redaxscript\Validator\ValidatorInterface::PASSED) { if ($r) { foreach ($r as $key => $value) { ${$key} = stripslashes($value); } } /* show if cagegory or article matched */ if ($category == CATEGORY || $article == ARTICLE || $category == 0 && $article == 0) { /* parser object */ $parser = new Redaxscript\Parser(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); $parser->init($text, array('className' => array('readmore' => 'link_read_more', 'codequote' => 'js_code_quote box_code'), 'route' => $route)); /* collect headline output */ $output .= Redaxscript\Hook::trigger('extra_start', $r); if ($headline == 1) { $output .= '<h3 class="title_extra" id="extra-' . $alias . '">' . $title . '</h3>'; } /* collect box output */ $output .= '<div class="box_extra">' . $parser->getOutput() . '</div>' . Redaxscript\Hook::trigger('extra_end', $r); /* prepend admin dock */ if (LOGGED_IN == TOKEN && FIRST_PARAMETER != 'logout') { $output .= admin_dock('extras', $id); } } } } } if ($filter == '') { $output .= Redaxscript\Hook::trigger(__FUNCTION__ . '_end'); } echo $output; }
/** * admin process * * @since 1.2.1 * @deprecated 2.0.0 * * @package Redaxscript * @category Admin * @author Henry Ruhs */ function admin_process() { $aliasValidator = new Redaxscript\Validator\Alias(); $loginValidator = new Redaxscript\Validator\Login(); $specialFilter = new Redaxscript\Filter\Special(); /* clean post */ switch (TABLE_PARAMETER) { /* categories */ case 'categories': $parent = $r['parent'] = clean($_POST['parent'], 0); /* articles */ /* articles */ case 'articles': $r['keywords'] = clean($_POST['keywords'], 5); $r['template'] = clean($_POST['template'], 0); /* extras */ /* extras */ case 'extras': $title = $r['title'] = clean($_POST['title'], 5); if (TABLE_PARAMETER != 'categories') { $r['headline'] = clean($_POST['headline'], 0); } $r['sibling'] = clean($_POST['sibling'], 0); /* comments */ /* comments */ case 'comments': if (TABLE_PARAMETER == 'comments') { $r['url'] = clean($_POST['url'], 4); } $author = $r['author'] = clean($_POST['author'], 0); if (TABLE_PARAMETER != 'categories') { $text = $r['text'] = clean($_POST['text'], 1); $date = $_POST['year'] . '-' . $_POST['month'] . '-' . $_POST['day'] . ' ' . $_POST['hour'] . ':' . $_POST['minute'] . ':00'; $date = $r['date'] = clean($date, 5); } $rank = $r['rank'] = clean($_POST['rank'], 0); /* groups */ /* groups */ case 'groups': if (TABLE_PARAMETER != 'comments') { $alias = $r['alias'] = clean($_POST['alias'], 2); } /* users */ /* users */ case 'users': if (TABLE_PARAMETER != 'groups') { $language = $r['language'] = clean($_POST['language'], 0); } /* modules */ /* modules */ case 'modules': $alias = clean($_POST['alias'], 2); $status = $r['status'] = clean($_POST['status'], 0); if (TABLE_PARAMETER != 'groups' && TABLE_PARAMETER != 'users' && GROUPS_EDIT == 1) { $access = array_map(array($specialFilter, 'sanitize'), $_POST['access']); $access = array_map('clean', $access); $access_string = implode(', ', $access); if ($access_string == '') { $access_string = null; } $access = $r['access'] = $access_string; } if (TABLE_PARAMETER != 'extras' && TABLE_PARAMETER != 'comments') { $r['description'] = clean($_POST['description'], 5); } $token = $_POST['token']; break; } /* clean contents post */ if (TABLE_PARAMETER == 'articles') { $r['infoline'] = clean($_POST['infoline'], 0); $comments = $r['comments'] = clean($_POST['comments'], 0); if ($category && ID_PARAMETER == '') { $status = $r['status'] = Redaxscript\Db::forTablePrefix('categories')->where('id', $category)->findOne()->status; } } if (TABLE_PARAMETER == 'articles' || TABLE_PARAMETER == 'extras') { $category = $r['category'] = clean($_POST['category'], 0); } if (TABLE_PARAMETER == 'articles' || TABLE_PARAMETER == 'extras' || TABLE_PARAMETER == 'comments') { if ($date > NOW) { $status = $r['status'] = 2; } else { $date = $r['date'] = NOW; } } if (TABLE_PARAMETER == 'extras' || TABLE_PARAMETER == 'comments') { $article = $r['article'] = clean($_POST['article'], 0); } if (TABLE_PARAMETER == 'comments' && ID_PARAMETER == '') { $status = $r['status'] = Redaxscript\Db::forTablePrefix('articles')->where('id', $article)->findOne()->status; } if (TABLE_PARAMETER == 'comments' || TABLE_PARAMETER == 'users') { $email = $r['email'] = clean($_POST['email'], 3); } /* clean groups post */ if (TABLE_PARAMETER == 'groups' && (ID_PARAMETER == '' || ID_PARAMETER > 1)) { $groups_array = array('categories', 'articles', 'extras', 'comments', 'groups', 'users', 'modules'); foreach ($groups_array as $value) { ${$value} = array_map(array($specialFilter, 'sanitize'), $_POST[$value]); ${$value} = array_map('clean', ${$value}); $groups_string = implode(', ', ${$value}); if ($groups_string == '') { $groups_string = 0; } $r[$value] = $groups_string; } $r['settings'] = clean($_POST['settings'], 0); $r['filter'] = clean($_POST['filter'], 0); } if ((TABLE_PARAMETER == 'groups' || TABLE_PARAMETER == 'users') && ID_PARAMETER == 1) { $status = $r['status'] = 1; } if (TABLE_PARAMETER == 'groups' || TABLE_PARAMETER == 'users' || TABLE_PARAMETER == 'modules') { $name = $r['name'] = clean($_POST['name'], 0); } /* clean users post */ if (TABLE_PARAMETER == 'users') { if ($_POST['user']) { $user = $r['user'] = clean($_POST['user'], 0); } else { $user = $r['user'] = Redaxscript\Db::forTablePrefix(TABLE_PARAMETER)->where('id', ID_PARAMETER)->findOne()->user; } $password_check = $password_confirm = 1; if ($_POST['edit'] && $_POST['password'] == '' && $_POST['password_confirm'] == '' || $_POST['delete']) { $password_check = 0; } if ($_POST['password'] != $_POST['password_confirm']) { $password_confirm = 0; } $password = clean($_POST['password'], 0); if ($password_check == 1 && $password_confirm == 1) { $passwordHash = new Redaxscript\Hash(Redaxscript\Config::getInstance()); $passwordHash->init($password); $r['password'] = $passwordHash->getHash(); } if ($_POST['new']) { $r['first'] = $r['last'] = NOW; } if (ID_PARAMETER == '' || ID_PARAMETER > 1) { $groups = array_map(array($specialFilter, 'sanitize'), $_POST['groups']); $groups = array_map('clean', $groups); $groups_string = implode(', ', $groups); if ($groups_string == '') { $groups_string = 0; } $groups = $r['groups'] = $groups_string; } } $r_keys = array_keys($r); $last = end($r_keys); /* validate post */ switch (TABLE_PARAMETER) { /* contents */ case 'categories': case 'articles': case 'extras': if ($title == '') { $error = l('title_empty'); } else { $title_id = Redaxscript\Db::forTablePrefix(TABLE_PARAMETER)->where('id', ID_PARAMETER)->findOne()->title; $id_title = Redaxscript\Db::forTablePrefix(TABLE_PARAMETER)->where('title', $title)->findOne()->id; } if ($id_title && strcasecmp($title_id, $title) < 0) { $error = l('title_exists'); } if (TABLE_PARAMETER == 'categories') { $opponent_id = Redaxscript\Db::forTablePrefix('articles')->where('alias', $alias)->findOne()->id; } if (TABLE_PARAMETER == 'articles') { $opponent_id = Redaxscript\Db::forTablePrefix('categories')->where('alias', $alias)->findOne()->id; } if ($opponent_id) { $error = l('alias_exists'); } if (TABLE_PARAMETER != 'groups' && $aliasValidator->validate($alias, Redaxscript\Validator\Alias::MODE_GENERAL) == Redaxscript\Validator\ValidatorInterface::PASSED || $aliasValidator->validate($alias, Redaxscript\Validator\Alias::MODE_DEFAULT) == Redaxscript\Validator\ValidatorInterface::PASSED) { $error = l('alias_incorrect'); } /* groups */ /* groups */ case 'groups': if ($alias == '') { $error = l('alias_empty'); } else { $alias_id = Redaxscript\Db::forTablePrefix(TABLE_PARAMETER)->where('id', ID_PARAMETER)->findOne()->alias; $id_alias = Redaxscript\Db::forTablePrefix(TABLE_PARAMETER)->where('alias', $alias)->findOne()->id; } if ($id_alias && strcasecmp($alias_id, $alias) < 0) { $error = l('alias_exists'); } } /* validate general post */ switch (TABLE_PARAMETER) { case 'articles': case 'extras': case 'comments': if ($text == '') { $error = l('text_empty'); } break; case 'groups': case 'users': case 'modules': if ($name == '') { $error = l('name_empty'); } break; } /* validate users post */ if (TABLE_PARAMETER == 'users') { if ($user == '') { $error = l('user_incorrect'); } else { $user_id = Redaxscript\Db::forTablePrefix(TABLE_PARAMETER)->where('id', ID_PARAMETER)->findOne()->user; $id_user = Redaxscript\Db::forTablePrefix(TABLE_PARAMETER)->where('user', $user)->findOne()->id; } if ($id_user && strcasecmp($user_id, $user) < 0) { $error = l('user_exists'); } if ($loginValidator->validate($user) == Redaxscript\Validator\ValidatorInterface::FAILED) { $error = l('user_incorrect'); } if ($password_check == 1) { if ($password == '') { $error = l('password_empty'); } if ($password_confirm == 0 || $loginValidator->validate($password) == Redaxscript\Validator\ValidatorInterface::FAILED) { $error = l('password_incorrect'); } } } /* validate last post */ $emailValidator = new Redaxscript\Validator\Email(); switch (TABLE_PARAMETER) { case 'comments': if ($author == '') { $error = l('author_empty'); } case 'users': if ($emailValidator->validate($email) == Redaxscript\Validator\ValidatorInterface::FAILED) { $error = l('email_incorrect'); } } $route = 'admin'; /* handle error */ if ($error) { if (ID_PARAMETER == '') { $route .= '/new/' . TABLE_PARAMETER; } else { $route .= '/edit/' . TABLE_PARAMETER . '/' . ID_PARAMETER; } notification(l('error_occurred'), $error, l('back'), $route); return; } else { if (TABLE_EDIT == 1 || TABLE_DELETE == 1) { $route .= '/view/' . TABLE_PARAMETER; if ($alias) { $route .= '#' . $alias; } else { if ($user) { $route .= '#' . $user; } } } } /* process */ switch (true) { /* query new */ case $_POST['new']: Redaxscript\Db::forTablePrefix(Redaxscript\Registry::get('tableParameter'))->create()->set($r)->save(); notification(l('operation_completed'), '', l('continue'), $route); return; /* query edit */ /* query edit */ case $_POST['edit']: Redaxscript\Db::forTablePrefix(Redaxscript\Registry::get('tableParameter'))->whereIdIs(Redaxscript\Registry::get('idParameter'))->findOne()->set($r)->save(); /* query categories */ if (TABLE_PARAMETER == 'categories') { $categoryChildren = Redaxscript\Db::forTablePrefix(TABLE_PARAMETER)->where('parent', ID_PARAMETER); $categoryArray = array_merge($categoryChildren->findArrayFlat(), array(ID_PARAMETER)); $articleChildren = Redaxscript\Db::forTablePrefix('articles')->whereIn('category', $categoryArray); $articleArray = $articleChildren->findArrayFlat(); if (count($articleArray) > 0) { Redaxscript\Db::forTablePrefix('comments')->whereIn('article', $articleArray)->findMany()->set(array('status' => $status, 'access' => $access))->save(); } $categoryChildren->findMany()->set(array('status' => $status, 'access' => $access))->save(); $articleChildren->findMany()->set(array('status' => $status, 'access' => $access))->save(); } /* query articles */ if (TABLE_PARAMETER == 'articles') { if ($comments == 0) { $status = 0; } Redaxscript\Db::forTablePrefix('comments')->where('article', ID_PARAMETER)->findMany()->set(array('status' => $status, 'access' => $access))->save(); } if (USERS_EXCEPTION == 1) { $_SESSION[ROOT . '/my_name'] = $name; $_SESSION[ROOT . '/my_email'] = $email; if (file_exists('languages/' . $language . '.php')) { $_SESSION[ROOT . '/language'] = $language; $_SESSION[ROOT . '/language_selected'] = 1; } } notification(l('operation_completed'), '', l('continue'), $route); return; } }
/** * templates list * * @since 1.2.1 * @deprecated 2.0.0 * * @package Redaxscript * @category Navigation * @author Henry Ruhs * * @param array $options */ function templates_list($options) { /* define option variables */ if (is_array($options)) { foreach ($options as $key => $value) { $key = 'option_' . $key; ${$key} = $value; } } /* templates directory */ $templates_directory = new Redaxscript\Directory(); $templates_directory->init('templates', ['admin', 'console', 'install']); $templates_directory_array = $templates_directory->getArray(); /* collect templates output */ foreach ($templates_directory_array as $value) { $class_string = null; if ($value == Redaxscript\Registry::get('template')) { $class_string = ' class="rs-item-active"'; } $output .= '<li' . $class_string . '><a href="' . Redaxscript\Registry::get('parameterRoute') . Redaxscript\Registry::get('fullRoute') . Redaxscript\Registry::get('templateRoute') . $value . '" rel="nofollow">' . $value . '</a>'; } /* build id string */ if ($option_id) { $id_string = ' id="' . $option_id . '"'; } /* build class string */ if ($option_class) { $class_string = ' class="' . $option_class . '"'; } else { $class_string = ' class="rs-list-templates"'; } /* collect list output */ if ($output) { $output = '<ul' . $id_string . $class_string . '>' . $output . '</ul>'; } echo $output; }
/** * future update * * @since 1.2.1 * @deprecated 2.0.0 * * @package Redaxscript * @category Query * @author Henry Ruhs * * @param string $table */ function future_update($table = '') { Redaxscript\Db::forTablePrefix($table)->where('status', 2)->whereLt('date', Redaxscript\Registry::get('now'))->findMany()->set('status', 1)->save(); }
/** * admin control * * @since 2.0.0 * @deprecated 2.0.0 * * @package Redaxscript * @category Admin * @author Henry Ruhs * * @param string $type * @param string $table * @param integer $id * @param string $alias * @param integer $status * @param string $new * @param string $edit * @param string $delete * @return string */ function admin_control($type, $table, $id, $alias, $status, $new, $edit, $delete) { $output = Redaxscript\Hook::trigger('adminControlStart'); /* define access variables */ if ($type == 'access' && $id == 1) { $delete = 0; } if ($type == 'modules_not_installed') { $edit = $delete = 0; } /* collect modules output */ if ($new == 1 && $type == 'modules_not_installed') { $output .= '<li class="rs-admin-item-control rs-admin-item-install"><a href="' . Redaxscript\Registry::get('parameterRoute') . 'admin/install/' . $table . '/' . $alias . '/' . Redaxscript\Registry::get('token') . '">' . Redaxscript\Language::get('install') . '</a></li>'; } /* collect contents output */ if ($type == 'contents') { if ($status == 2) { $output .= '<li class="rs-admin-item-control rs-admin-item-future-posting"><span>' . Redaxscript\Language::get('future_posting') . '</span></li>'; } if ($edit == 1) { if ($status == 1) { $output .= '<li class="rs-admin-item-control rs-admin-item-unpublish"><a href="' . Redaxscript\Registry::get('parameterRoute') . 'admin/unpublish/' . $table . '/' . $id . '/' . Redaxscript\Registry::get('token') . '">' . Redaxscript\Language::get('unpublish') . '</a></li>'; } else { if ($status == 0) { $output .= '<li class="rs-admin-item-control rs-admin-item-publish"><a href="' . Redaxscript\Registry::get('parameterRoute') . 'admin/publish/' . $table . '/' . $id . '/' . Redaxscript\Registry::get('token') . '">' . Redaxscript\Language::get('publish') . '</a></li>'; } } } } /* collect access and system output */ if ($edit == 1 && ($type == 'access' && $id > 1 || $type == 'modules_installed')) { if ($status == 1) { $output .= '<li class="rs-admin-item-control rs-admin-item-disable"><a href="' . Redaxscript\Registry::get('parameterRoute') . 'admin/disable/' . $table . '/' . $id . '/' . Redaxscript\Registry::get('token') . '">' . Redaxscript\Language::get('disable') . '</a></li>'; } else { if ($status == 0) { $output .= '<li class="rs-admin-item-control rs-admin-item-enable"><a href="' . Redaxscript\Registry::get('parameterRoute') . 'admin/enable/' . $table . '/' . $id . '/' . Redaxscript\Registry::get('token') . '">' . Redaxscript\Language::get('enable') . '</a></li>'; } } } /* collect general edit and delete output */ if ($edit == 1) { $output .= '<li class="rs-admin-item-control rs-admin-item-edit"><a href="' . Redaxscript\Registry::get('parameterRoute') . 'admin/edit/' . $table . '/' . $id . '">' . Redaxscript\Language::get('edit') . '</a></li>'; } if ($delete == 1) { if ($type == 'modules_installed') { $output .= '<li class="rs-admin-item-control rs-admin-item-uninstall"><a href="' . Redaxscript\Registry::get('parameterRoute') . 'admin/uninstall/' . $table . '/' . $alias . '/' . Redaxscript\Registry::get('token') . '" class="rs-admin-js-confirm">' . Redaxscript\Language::get('uninstall') . '</a></li>'; } else { $output .= '<li class="rs-admin-item-control rs-admin-item-delete"><a href="' . Redaxscript\Registry::get('parameterRoute') . 'admin/delete/' . $table . '/' . $id . '/' . Redaxscript\Registry::get('token') . '" class="rs-admin-js-confirm">' . Redaxscript\Language::get('delete') . '</a></li>'; } } /* collect list output */ if ($output) { $output = '<ul class="rs-admin-list-control">' . $output . '</ul>'; } $output .= Redaxscript\Hook::trigger('adminControlEnd'); return $output; }
/** * admin modules list * * @since 1.2.1 * @deprecated 2.0.0 * * @package Redaxscript * @category Admin * @author Henry Ruhs */ function admin_modules_list() { $output = Redaxscript\Hook::trigger('adminModuleListStart'); /* query modules */ $result = Redaxscript\Db::forTablePrefix('modules')->orderByAsc('name')->findArray(); $num_rows = count($result); /* collect listing output */ $output .= '<h2 class="rs-admin-title-content">' . Redaxscript\Language::get('modules') . '</h2>'; $output .= '<div class="rs-admin-wrapper-table"><table class="rs-admin-table-default rs-admin-table-module">'; /* collect thead and tfoot */ $output .= '<thead><tr><th class="rs-admin-col-name">' . Redaxscript\Language::get('name') . '</th><th class="rs-admin-col-alias">' . Redaxscript\Language::get('alias') . '</th><th class="rs-admin-col-version">' . Redaxscript\Language::get('version') . '</th></tr></thead>'; $output .= '<tfoot><tr><td>' . Redaxscript\Language::get('name') . '</td><td>' . Redaxscript\Language::get('alias') . '</td><td>' . Redaxscript\Language::get('version') . '</td></tr></tfoot>'; if (!$result || !$num_rows) { $error = Redaxscript\Language::get('module_no') . Redaxscript\Language::get('point'); } else { if ($result) { $accessValidator = new Redaxscript\Validator\Access(); $output .= '<tbody>'; foreach ($result as $r) { $access = $r['access']; /* access granted */ if ($accessValidator->validate($access, Redaxscript\Registry::get('myGroups')) === Redaxscript\Validator\ValidatorInterface::PASSED) { if ($r) { foreach ($r as $key => $value) { ${$key} = stripslashes($value); } } $modules_installed_array[] = $alias; /* build class string */ if ($status == 1) { $class_status = null; } else { $class_status = 'rs-admin-is-disabled'; } /* collect table row */ $output .= '<tr'; if ($alias) { $output .= ' id="' . $alias . '"'; } if ($class_status) { $output .= ' class="' . $class_status . '"'; } $output .= '><td>' . $name; /* collect control output */ $output .= admin_control('modules_installed', 'modules', $id, $alias, $status, Redaxscript\Registry::get('tableInstall'), Redaxscript\Registry::get('tableEdit'), Redaxscript\Registry::get('tableUninstall')); /* collect alias and version output */ $output .= '</td><td>' . $alias . '</td><td>' . $version . '</td></tr>'; } else { $counter++; } } $output .= '</tbody>'; /* handle access */ if ($num_rows == $counter) { $error = Redaxscript\Language::get('access_no') . Redaxscript\Language::get('point'); } } } /* handle error */ if ($error) { $output .= '<tbody><tr><td colspan="3">' . $error . '</td></tr></tbody>'; } /* modules not installed */ if (Redaxscript\Registry::get('modulesInstall') == 1) { /* modules directory */ $modules_directory = new Redaxscript\Directory(); $modules_directory->init('modules'); $modules_directory_array = $modules_directory->getArray(); if ($modules_directory_array && $modules_installed_array) { $modules_not_installed_array = array_diff($modules_directory_array, $modules_installed_array); } else { if ($modules_directory_array) { $modules_not_installed_array = $modules_directory_array; } } if ($modules_not_installed_array) { $output .= '<tbody><tr class="rs-admin-row-group"><td colspan="3">' . Redaxscript\Language::get('install') . '</td></tr>'; foreach ($modules_not_installed_array as $alias) { /* collect table row */ $output .= '<tr'; if ($alias) { $output .= ' id="' . $alias . '"'; } $output .= '><td colspan="3">' . $alias; /* collect control output */ $output .= admin_control('modules_not_installed', 'modules', $id, $alias, $status, Redaxscript\Registry::get('tableInstall'), Redaxscript\Registry::get('tableEdit'), Redaxscript\Registry::get('tableUninstall')); $output .= '</td></tr>'; } $output .= '</tbody>'; } } $output .= '</table></div>'; $output .= Redaxscript\Hook::trigger('adminModuleListEnd'); echo $output; }
/** * admin router * * @since 1.2.1 * @deprecated 2.0.0 * * @package Redaxscript * @category Admin * @author Henry Ruhs */ function admin_router() { $firstParameter = Redaxscript\Registry::get('firstParameter'); $adminParameter = Redaxscript\Registry::get('adminParameter'); $tableParameter = Redaxscript\Registry::get('tableParameter'); $idParameter = Redaxscript\Registry::get('idParameter'); $aliasParameter = Redaxscript\Registry::get('aliasParameter'); $tokenParameter = Redaxscript\Registry::get('tokenParameter'); $usersException = $tableParameter == 'users' && $idParameter == Redaxscript\Registry::get('myId'); $messenger = new Redaxscript\Admin\Messenger(Redaxscript\Registry::getInstance()); Redaxscript\Hook::trigger('adminRouterStart'); if (Redaxscript\Registry::get('adminRouterBreak') == 1) { return; } /* last seen update */ if ($firstParameter == 'admin' && !$adminParameter || $adminParameter == 'view' && $tableParameter == 'users' || Redaxscript\Registry::get('cronUpdate')) { admin_last_update(); } /* validate routing */ switch (true) { case $adminParameter && !in_array($adminParameter, ['new', 'view', 'edit', 'up', 'down', 'sort', 'publish', 'unpublish', 'enable', 'disable', 'install', 'uninstall', 'delete', 'process', 'update']): case $adminParameter == 'process' && !$_POST['new'] && !$_POST['edit']: case $adminParameter == 'update' && !$_POST['update']: case $adminParameter && !in_array($tableParameter, ['categories', 'articles', 'extras', 'comments', 'groups', 'users', 'modules', 'settings']): case !$aliasParameter && ($adminParameter == 'install' || $adminParameter == 'uninstall'): case !$idParameter && in_array($adminParameter, ['edit', 'up', 'down', 'publish', 'unpublish', 'enable', 'disable']) && $tableParameter != 'settings': case is_numeric($idParameter) && !Redaxscript\Db::forTablePrefix($tableParameter)->where('id', $idParameter)->findOne()->id: /* show error */ echo $messenger->setRoute(Redaxscript\Language::get('back'), 'admin')->error(Redaxscript\Language::get('something_wrong')); return; } /* define access variables */ if ($adminParameter && $tableParameter) { if ($tableParameter == 'modules') { $install = Redaxscript\Registry::get('modulesInstall'); $uninstall = Redaxscript\Registry::get('modulesUninstall'); } else { if ($tableParameter != 'settings') { $new = Redaxscript\Registry::get('tableNew'); if ($tableParameter == 'comments') { $articles_total = Redaxscript\Db::forTablePrefix('articles')->count(); $articles_comments_disable = Redaxscript\Db::forTablePrefix('articles')->where('comments', 0)->count(); if ($articles_total == $articles_comments_disable) { $new = 0; } } $delete = Redaxscript\Registry::get('tableDelete'); } } $edit = Redaxscript\Registry::get('tableEdit'); } if ($edit == 1 || $delete == 1) { $accessValidator = new Redaxscript\Validator\Access(); $access = Redaxscript\Db::forTablePrefix($tableParameter)->where('id', $idParameter)->findOne()->access; $check_access = $accessValidator->validate($access, Redaxscript\Registry::get('myGroups')); } /* validate access */ switch (true) { case $adminParameter == 'new' && $new == 0: case $adminParameter == 'view' && in_array($tableParameter, ['categories', 'articles', 'extras', 'comments', 'groups', 'users']) && $new == 0 && $edit == 0 && $delete == 0: case $adminParameter == 'view' && $tableParameter == 'settings': case $adminParameter == 'view' && $tableParameter == 'modules' && $edit == 0 && $install == 0 && $uninstall == 0: case $adminParameter == 'edit' && $edit == 0 && !$usersException: case in_array($adminParameter, ['up', 'down', 'sort', 'publish', 'unpublish', 'enable', 'disable']) && $edit == 0: case $adminParameter == 'install' && $install == 0: case $adminParameter == 'uninstall' && $uninstall == 0: case $adminParameter == 'delete' && $delete == 0 && !$usersException: case $adminParameter == 'process' && $_POST['new'] && $new == 0: case $adminParameter == 'process' && $_POST['edit'] && $edit == 0 && !$usersException: case $adminParameter == 'process' && $_POST['groups'] && !Redaxscript\Registry::get('groupsEdit'): case $adminParameter == 'update' && $edit == 0: case $idParameter == 1 && ($adminParameter == 'disable' || $adminParameter == 'delete') && ($tableParameter == 'groups' || $tableParameter == 'users'): case is_numeric($idParameter) && $tableParameter && $check_access == 0 && !$usersException: /* show error */ echo $messenger->setRoute(Redaxscript\Language::get('back'), 'admin')->error(Redaxscript\Language::get('error_occurred'), Redaxscript\Language::get('access_no')); return; } /* check token */ if (in_array($adminParameter, ['up', 'down', 'sort', 'publish', 'unpublish', 'enable', 'disable', 'install', 'uninstall', 'delete']) && !$tokenParameter) { /* show error */ echo $messenger->setRoute(Redaxscript\Language::get('back'), 'admin')->error(Redaxscript\Language::get('error_occurred'), Redaxscript\Language::get('token_no')); return; } /* admin routing */ if ($firstParameter == 'admin' && !$adminParameter) { contents(); } switch ($adminParameter) { case 'new': if ($tableParameter == 'categories') { $categoryForm = new Redaxscript\Admin\View\CategoryForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $categoryForm->render(); } if ($tableParameter == 'articles') { $articleForm = new Redaxscript\Admin\View\ArticleForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $articleForm->render(); } if ($tableParameter == 'extras') { $extraForm = new Redaxscript\Admin\View\ExtraForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $extraForm->render(); } if ($tableParameter == 'comments') { $commentForm = new Redaxscript\Admin\View\CommentForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $commentForm->render(); } if ($tableParameter == 'groups') { $groupForm = new Redaxscript\Admin\View\GroupForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $groupForm->render(); } if ($tableParameter == 'users') { $userForm = new Redaxscript\Admin\View\UserForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $userForm->render(); } return; case 'view': if (in_array($tableParameter, ['categories', 'articles', 'extras', 'comments'])) { admin_contents_list(); } if (in_array($tableParameter, ['groups', 'users', 'modules'])) { call_user_func('admin_' . $tableParameter . '_list'); } return; case 'edit': if ($tableParameter == 'categories') { $categoryForm = new Redaxscript\Admin\View\CategoryForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $categoryForm->render($idParameter); } if ($tableParameter == 'articles') { $articleForm = new Redaxscript\Admin\View\ArticleForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $articleForm->render($idParameter); } if ($tableParameter == 'extras') { $extraForm = new Redaxscript\Admin\View\ExtraForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $extraForm->render($idParameter); } if ($tableParameter == 'comments') { $commentForm = new Redaxscript\Admin\View\CommentForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $commentForm->render($idParameter); } if ($tableParameter == 'groups') { $groupForm = new Redaxscript\Admin\View\GroupForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $groupForm->render($idParameter); } if ($tableParameter == 'users') { $userForm = new Redaxscript\Admin\View\UserForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $userForm->render($idParameter); } if ($tableParameter == 'modules') { $moduleForm = new Redaxscript\Admin\View\ModuleForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $moduleForm->render($idParameter); } if ($tableParameter == 'settings') { $settingForm = new Redaxscript\Admin\View\SettingForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $settingForm->render(); } return; case 'up': case 'down': admin_move(); return; case 'sort': admin_sort(); return; case 'publish': case 'enable': admin_status(1); return; case 'unpublish': case 'disable': admin_status(0); return; case 'install': case 'uninstall': admin_install(); return; case 'delete': case 'process': case 'update': call_user_func('admin_' . $adminParameter); return; } Redaxscript\Hook::trigger('adminRouterEnd'); }
/** * scripts transport * * @since 1.2.1 * @deprecated 2.0.0 * * @package Redaxscript * @category Loader * @author Henry Ruhs * * @param string|boolean $minify * @return string */ function scripts_transport($minify = '') { /* extend redaxscript object */ $public_registry = array('token', 'loggedIn', 'firstParameter', 'secondParameter', 'thirdParameter', 'adminParameter', 'tableParameter', 'idParameter', 'aliasParameter', 'lastParameter', 'firstTable', 'secondTable', 'thirdTable', 'lastTable', 'fullRoute', 'fullTopRoute', 'rewriteRoute', 'languageRoute', 'templateRoute', 'refreshRoute', 'myBrowser', 'myBrowserVersion', 'myEngine', 'myDesktop', 'myMobile', 'myTablet'); /* collect output */ $output = 'if (typeof rs === \'object\')' . PHP_EOL; $output .= '{' . PHP_EOL; /* languages object */ $language = Redaxscript\Language::getInstance(); /* add language */ $output .= 'rs.language = ' . json_encode($language->get()) . ';' . PHP_EOL; /* add registry */ $output .= 'rs.registry = {};'; foreach ($public_registry as $value) { $output .= 'rs.registry.' . $value . ' = \'' . Redaxscript\Registry::get($value) . '\';' . PHP_EOL; } /* baseURL fallback */ $output .= 'if (rs.baseURL === \'\')' . PHP_EOL; $output .= '{' . PHP_EOL; $output .= 'rs.baseURL = \'' . ROOT . '\\/\';' . PHP_EOL; $output .= '}' . PHP_EOL; /* generator and version */ $output .= 'rs.generator = \'' . l('name', '_package') . ' ' . l('version', '_package') . '\';' . PHP_EOL; $output .= 'rs.version = \'' . l('version', '_package') . '\';' . PHP_EOL; $output .= '}' . PHP_EOL; /* minify */ if ($minify) { $minifier = new Redaxscript\Minifier(); $output = $minifier->scripts($output); } return $output; }
/** * comments * * @since 1.2.1 * @deprecated 2.0.0 * * @package Redaxscript * @category Comments * @author Henry Ruhs * * @param integer $article * @param string $route */ function comments($article, $route) { $output = Redaxscript\Hook::trigger('commentStart'); /* query comments */ $comments = Redaxscript\Db::forTablePrefix('comments')->where(['status' => 1, 'article' => $article])->whereLanguageIs(Redaxscript\Registry::get('language'))->orderGlobal('rank'); /* query result */ $result = $comments->findArray(); if ($result) { $num_rows = count($result); $sub_maximum = ceil($num_rows / Redaxscript\Db::getSetting('limit')); $sub_active = Redaxscript\Registry::get('lastSubParameter'); /* sub parameter */ if (Redaxscript\Registry::get('lastSubParameter') > $sub_maximum || !Redaxscript\Registry::get('lastSubParameter')) { $sub_active = 1; } else { $offset_string = ($sub_active - 1) * Redaxscript\Db::getSetting('limit') . ', '; } } $comments->limit($offset_string . Redaxscript\Db::getSetting('limit')); /* query result */ $result = $comments->findArray(); $num_rows_active = count($result); /* handle error */ if (!$result || !$num_rows) { $error = Redaxscript\Language::get('comment_no'); } else { if ($result) { $accessValidator = new Redaxscript\Validator\Access(); foreach ($result as $r) { $access = $r['access']; /* access granted */ if ($accessValidator->validate($access, Redaxscript\Registry::get('myGroups')) === Redaxscript\Validator\ValidatorInterface::PASSED) { if ($r) { foreach ($r as $key => $value) { ${$key} = stripslashes($value); } } /* collect headline output */ $output .= Redaxscript\Hook::trigger('commentFragmentStart', $r) . '<h3 id="comment-' . $id . '" class="rs-title-comment">'; if ($url) { $output .= '<a href="' . $url . '" rel="nofollow">' . $author . '</a>'; } else { $output .= $author; } $output .= '</h3>'; /* collect box output */ $output .= '<div class="rs-box-comment">' . $text . '</div>'; $output .= byline('comments', $id, $author, $date); $output .= Redaxscript\Hook::trigger('commentFragmentEnd', $r); /* admin dock */ if (Redaxscript\Registry::get('loggedIn') == Redaxscript\Registry::get('token') && Redaxscript\Registry::get('firstParameter') != 'logout') { $output .= admin_dock('comments', $id); } } else { $counter++; } } /* handle access */ if ($num_rows_active == $counter) { $error = Redaxscript\Language::get('access_no'); } } } /* handle error */ if ($error) { $output = '<div class="rs-box-comment">' . $error . Redaxscript\Language::get('point') . '</div>'; } $output .= Redaxscript\Hook::trigger('commentEnd'); echo $output; /* call pagination as needed */ if ($sub_maximum > 1 && Redaxscript\Db::getSetting('pagination') == 1) { pagination($sub_active, $sub_maximum, $route); } }
if (file_exists('modules/' . $value . '/index.php')) { include_once 'modules/' . $value . '/index.php'; } } } /* call loader else render template */ if (FIRST_PARAMETER == 'loader' && (SECOND_PARAMETER == 'styles' || SECOND_PARAMETER == 'scripts')) { echo loader(SECOND_PARAMETER, 'outline'); } else { Redaxscript\Hook::trigger('render_start'); /* transport registry to constants */ if (Redaxscript\Registry::get('renderBreak')) { define(RENDER_BREAK, Redaxscript\Registry::get('renderBreak')); } if (Redaxscript\Registry::get('centerBreak')) { define(CENTER_BREAK, Redaxscript\Registry::get('centerBreak')); } /* undefine */ undefine(array('RENDER_BREAK', 'CENTER_BREAK', 'REFRESH_ROUTE', 'DESCRIPTION', 'KEYWORDS', 'ROBOTS', 'TITLE')); /* render break */ if (RENDER_BREAK == 1) { return; } else { /* handle error */ if (CONTENT_ERROR && CENTER_BREAK == '') { header('http/1.0 404 not found'); } include_once 'templates/' . TEMPLATE . '/index.phtml'; } Redaxscript\Hook::trigger('render_end'); }
/** * password reset post * * @since 1.2.1 * @deprecated 2.0.0 * * @package Redaxscript * @category Password * @author Henry Ruhs */ function password_reset_post() { /* clean post */ if (ATTACK_BLOCKED < 10 && $_SESSION[ROOT . '/password_reset'] == 'visited') { $post_id = clean($_POST['id'], 0); $post_password = clean($_POST['password'], 0); $password = hash_generator(10); $task = $_POST['task']; $solution = $_POST['solution']; } /* query user information */ if ($post_id && $post_password) { $users_result = Redaxscript\Db::forTablePrefix('users')->where(array('id' => $post_id, 'password' => $post_password, 'status' => 1))->findArray(); foreach ($users_result as $r) { foreach ($r as $key => $value) { $key = 'my_' . $key; ${$key} = stripslashes($value); } } } /* validate post */ if ($post_id == '' || $post_password == '') { $error = l('input_incorrect'); } else { if (sha1($task) != $solution) { $error = l('captcha_incorrect'); } else { if ($my_id == '' || $my_password == '') { $error = l('access_no'); } else { /* send new password */ $loginRoute = ROOT . '/' . REWRITE_ROUTE . 'login'; $loginLink = anchor_element('external', '', '', $loginRoute, $loginRoute); $toArray = array($my_name => $my_email); $fromArray = array(s('author') => s('email')); $subject = l('password_new'); $bodyArray = array('<strong>' . l('password_new') . l('colon') . '</strong> ' . $password, '<br />', '<strong>' . l('login') . l('colon') . '</strong> ' . $loginLink); /* mailer object */ $mailer = new Redaxscript\Mailer(); $mailer->init($toArray, $fromArray, $subject, $bodyArray); $mailer->send(); /* update password */ Redaxscript\Db::forTablePrefix('users')->where(array('id' => $post_id, 'password' => $post_password, 'status' => 1))->findOne()->set('password', sha1($password) . Redaxscript\Registry::get('salt'))->save(); } } } /* handle error */ if ($error) { if (s('blocker') == 1) { $_SESSION[ROOT . '/attack_blocked']++; } if ($post_id && $post_password) { $back_route = 'password_reset/' . $post_id . '/' . $post_password; } else { $back_route = 'reminder'; } notification(l('error_occurred'), $error, l('back'), $back_route); } else { notification(l('operation_completed'), l('password_sent'), l('login'), 'login'); } $_SESSION[ROOT . '/password_reset'] = ''; }
/** * comments * * @since 1.2.1 * @deprecated 2.0.0 * * @package Redaxscript * @category Comments * @author Henry Ruhs * * @param integer $article * @param string $route */ function comments($article = '', $route = '') { $output = Redaxscript\Hook::trigger(__FUNCTION__ . '_start'); /* query comments */ $comments = Redaxscript\Db::forTablePrefix('comments')->where(array('status' => 1, 'article' => $article))->whereIn('language', array(Redaxscript\Registry::get('language'), ''))->orderGlobal('rank'); /* query result */ $result = $comments->findArray(); if ($result) { $num_rows = count($result); $sub_maximum = ceil($num_rows / s('limit')); $sub_active = LAST_SUB_PARAMETER; /* sub parameter */ if (LAST_SUB_PARAMETER > $sub_maximum || LAST_SUB_PARAMETER == '') { $sub_active = 1; } else { $offset_string = ($sub_active - 1) * s('limit') . ', '; } } $comments->limit($offset_string . s('limit')); /* query result */ $result = $comments->findArray(); $num_rows_active = count($result); /* handle error */ if ($result == '' || $num_rows == '') { $error = l('comment_no'); } else { if ($result) { $accessValidator = new Redaxscript\Validator\Access(); $output .= '<div class="box_line"></div>'; foreach ($result as $r) { $access = $r['access']; /* access granted */ if ($accessValidator->validate($access, MY_GROUPS) === Redaxscript\Validator\ValidatorInterface::PASSED) { if ($r) { foreach ($r as $key => $value) { ${$key} = stripslashes($value); } } /* collect headline output */ $output .= Redaxscript\Hook::trigger('comment_start', $r) . '<h3 id="comment-' . $id . '" class="title_comment">'; if ($url) { $output .= anchor_element('external', '', '', $author, $url, '', 'rel="nofollow"'); } else { $output .= $author; } $output .= '</h3>'; /* collect box output */ $output .= infoline('comments', $id, $author, $date); $output .= '<div class="box_comment">' . $text . '</div>' . Redaxscript\Hook::trigger('comment_end', $r); /* admin dock */ if (LOGGED_IN == TOKEN && FIRST_PARAMETER != 'logout') { $output .= admin_dock('comments', $id); } } else { $counter++; } } /* handle access */ if ($num_rows_active == $counter) { $error = l('access_no'); } } } /* handle error */ if ($error) { $output = '<div class="box_comment_error">' . $error . l('point') . '</div>'; } $output .= Redaxscript\Hook::trigger(__FUNCTION__ . '_end'); echo $output; /* call pagination as needed */ if ($sub_maximum > 1 && s('pagination') == 1) { pagination($sub_active, $sub_maximum, $route); } }
/** * registration post * * @since 1.2.1 * @deprecated 2.0.0 * * @package Redaxscript * @category Registration * @author Henry Ruhs */ function registration_post() { /* clean post */ if (ATTACK_BLOCKED < 10 && $_SESSION[ROOT . '/registration'] == 'visited') { $name = $r['name'] = clean($_POST['name'], 0); $user = $r['user'] = clean($_POST['user'], 0); $email = $r['email'] = clean($_POST['email'], 3); $password = substr(sha1(uniqid()), 0, 10); $passwordHash = new Redaxscript\Hash(Redaxscript\Config::getInstance()); $passwordHash->init($password); $r['password'] = $passwordHash->getHash(); $r['description'] = ''; $r['language'] = Redaxscript\Registry::get('language'); $r['first'] = $r['last'] = NOW; $r['groups'] = Redaxscript\Db::forTablePrefix('groups')->where('alias', 'members')->findOne()->id; if ($r['groups'] == '') { $r['groups'] = 0; } $task = $_POST['task']; $solution = $_POST['solution']; } /* validate post */ $loginValidator = new Redaxscript\Validator\Login(); $emailValidator = new Redaxscript\Validator\Email(); $captchaValidator = new Redaxscript\Validator\Captcha(); if ($name == '') { $error = l('name_empty'); } else { if ($user == '') { $error = l('user_empty'); } else { if ($email == '') { $error = l('email_empty'); } else { if ($loginValidator->validate($user) == Redaxscript\Validator\ValidatorInterface::FAILED) { $error = l('user_incorrect'); } else { if ($emailValidator->validate($email) == Redaxscript\Validator\ValidatorInterface::FAILED) { $error = l('email_incorrect'); } else { if ($captchaValidator->validate($task, $solution) == Redaxscript\Validator\ValidatorInterface::FAILED) { $error = l('captcha_incorrect'); } else { if (Redaxscript\Db::forTablePrefix('users')->where('user', $user)->findOne()->id) { $error = l('user_exists'); } else { if (USERS_NEW == 0 && s('verification') == 1) { $r['status'] = 0; $success = l('registration_verification'); } else { $r['status'] = 1; $success = l('registration_sent'); } /* send login information */ $loginRoute = ROOT . '/' . REWRITE_ROUTE . 'login'; $loginLink = anchor_element('external', '', '', $loginRoute, $loginRoute); $toArray = array($name => $email); if (s('notification') == 1) { $toArray[s('author')] = s('email'); } $fromArray = array($author => $email); $subject = l('registration'); $bodyArray = array('<strong>' . l('name') . l('colon') . '</strong> ' . $name, '<br />', '<strong>' . l('user') . l('colon') . '</strong> ' . $user, '<br />', '<strong>' . l('password') . l('colon') . '</strong> ' . $password, '<br />', '<strong>' . l('login') . l('colon') . '<strong> ' . $loginLink); /* mailer object */ $mailer = new Redaxscript\Mailer(); $mailer->init($toArray, $fromArray, $subject, $bodyArray); $mailer->send(); /* create user */ Redaxscript\Db::forTablePrefix('users')->create()->set($r)->save(); } } } } } } } /* handle error */ if ($error) { if (s('blocker') == 1) { $_SESSION[ROOT . '/attack_blocked']++; } notification(l('error_occurred'), $error, l('back'), 'registration'); } else { notification(l('operation_completed'), $success, l('login'), 'login'); } $_SESSION[ROOT . '/registration'] = ''; }
/** * router * * @since 1.2.1 * @deprecated 2.0.0 * * @package Redaxscript * @category Center * @author Henry Ruhs */ function router() { $firstParameter = Redaxscript\Registry::get('firstParameter'); $secondParameter = Redaxscript\Registry::get('secondParameter'); $thirdParameter = Redaxscript\Registry::get('thirdParameter'); $thirdSubParameter = Redaxscript\Registry::get('thirdSubParameter'); $config = Redaxscript\Config::getInstance(); Redaxscript\Hook::trigger('routerStart'); if (Redaxscript\Registry::get('routerBreak')) { return; } /* check token */ $messenger = new Redaxscript\Messenger(Redaxscript\Registry::getInstance()); if ($_POST && $_POST['token'] != Redaxscript\Registry::get('token')) { echo $messenger->setRoute(Redaxscript\Language::get('home'), Redaxscript\Registry::get('root'))->error(Redaxscript\Language::get('token_incorrect'), Redaxscript\Language::get('error_occurred')); return; } /* install routing */ if (Redaxscript\Registry::get('file') === 'install.php' && $config->get('env') !== 'production') { if (Redaxscript\Request::getPost('Redaxscript\\View\\InstallForm')) { $installController = new Redaxscript\Controller\Install(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance(), Redaxscript\Request::getInstance(), Redaxscript\Config::getInstance()); echo $installController->process(); return; } else { $systemStatus = new Redaxscript\View\SystemStatus(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); $installForm = new Redaxscript\View\InstallForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $systemStatus->render() . $installForm->render(); return; } } /* general routing */ $post_list = ['Redaxscript\\View\\LoginForm' => 'Redaxscript\\Controller\\Login', 'Redaxscript\\View\\RegisterForm' => 'Redaxscript\\Controller\\Register', 'Redaxscript\\View\\ResetForm' => 'Redaxscript\\Controller\\Reset', 'Redaxscript\\View\\RecoverForm' => 'Redaxscript\\Controller\\Recover', 'Redaxscript\\View\\CommentForm' => 'Redaxscript\\Controller\\Comment']; foreach ($post_list as $key => $value) { if (Redaxscript\Request::getPost($key)) { if (class_exists($value)) { $controller = new $value(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance(), Redaxscript\Request::getInstance()); echo $controller->process(); } return; } } /* search routing */ if (Redaxscript\Request::getPost('Redaxscript\\View\\SearchForm')) { $messenger = new Redaxscript\Messenger(Redaxscript\Registry::getInstance()); $table = Redaxscript\Request::getPost('table'); if ($table) { $table = '/' . $table; } echo $messenger->setRoute(Redaxscript\Language::get('continue'), 'search' . $table . '/' . Redaxscript\Request::getPost('search'))->doRedirect(0)->success(Redaxscript\Language::get('search')); } /* parameter routing */ switch ($firstParameter) { case 'admin': if (Redaxscript\Registry::get('loggedIn') == Redaxscript\Registry::get('token')) { admin_router(); } else { echo $messenger->setRoute(Language::get('login'), 'login')->error(Language::get('access_no'), Language::get('error_occurred')); } return; case 'login': switch ($secondParameter) { case 'recover': if (Redaxscript\Db::getSetting('recovery') == 1) { $recoverForm = new Redaxscript\View\RecoverForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $recoverForm->render(); return; } case 'reset': if (Redaxscript\Db::getSetting('recovery') == 1 && $thirdParameter && $thirdSubParameter) { $resetForm = new Redaxscript\View\ResetForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $resetForm->render(); return; } /* show error */ echo $messenger->setRoute(Language::get('login'), 'login')->error(Language::get('access_no'), Language::get('error_occurred')); return; default: $loginForm = new Redaxscript\View\LoginForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $loginForm->render(); return; } case 'logout': if (Redaxscript\Registry::get('loggedIn') == Redaxscript\Registry::get('token')) { $logoutController = new Redaxscript\Controller\Logout(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance(), Redaxscript\Request::getInstance()); echo $logoutController->process(); return; } /* show error */ echo $messenger->setRoute(Language::get('login'), 'login')->error(Language::get('access_no'), Language::get('error_occurred')); return; case 'register': if (Redaxscript\Db::getSetting('registration')) { $registerForm = new Redaxscript\View\RegisterForm(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance()); echo $registerForm->render(); return; } /* show error */ echo $messenger->setRoute(Language::get('home'), Redaxscript\Registry::get('root'))->error(Language::get('access_no'), Language::get('error_occurred')); return; case 'search': $searchController = new Redaxscript\Controller\Search(Redaxscript\Registry::getInstance(), Redaxscript\Language::getInstance(), Redaxscript\Request::getInstance()); echo $searchController->process(); return; default: contents(); return; } Redaxscript\Hook::trigger('routerEnd'); }
/** * admin last update * * @since 1.2.1 * @deprecated 2.0.0 * * @package Redaxscript * @category Admin * @author Henry Ruhs */ function admin_last_update() { if (Redaxscript\Registry::get('myId')) { Redaxscript\Db::forTablePrefix('users')->where('id', Redaxscript\Registry::get('myId'))->findOne()->set('last', Redaxscript\Registry::get('now'))->save(); } }
/** * startup * * @since 1.2.1 * @deprecated 2.0.0 * * @package Redaxscript * @category Startup * @author Henry Ruhs */ function startup() { /* ini set */ if (function_exists('ini_set')) { if (error_reporting() == 0) { ini_set('display_startup_errors', 0); ini_set('display_errors', 0); } ini_set('session.use_trans_sid', 0); ini_set('url_rewriter.tags', 0); ini_set('mbstring.substitute_character', 0); } /* define general */ $request = Redaxscript\Request::getInstance(); $file = new Redaxscript\Server\File($request); $root = new Redaxscript\Server\Root($request); define('FILE', $file->getOutput()); define('ROOT', $root->getOutput()); /* session start */ session_start(); /* prevent session hijacking */ if (!$_SESSION[ROOT . '/regenerate_id']) { session_regenerate_id(); $_SESSION[ROOT . '/regenerate_id'] = 1; } /* database status */ Redaxscript\Registry::set('dbStatus', Redaxscript\Db::getStatus()); /* define token */ $token = new Redaxscript\Server\Token($request); define('TOKEN', $token->getOutput()); /* prefix and salt */ define('PREFIX', Redaxscript\Config::get('dbPrefix')); define('SALT', Redaxscript\Config::get('dbSalt')); /* define session */ define('LOGGED_IN', $_SESSION[ROOT . '/logged_in']); define('ATTACK_BLOCKED', $_SESSION[ROOT . '/attack_blocked']); /* setup charset */ if (function_exists('ini_set') && Redaxscript\Registry::get('dbStatus') === 2) { ini_set('default_charset', s('charset')); } /* define parameter */ $parameter = new Redaxscript\Parameter($request); $parameter->init(); define('FIRST_PARAMETER', $parameter->getFirst()); define('FIRST_SUB_PARAMETER', $parameter->getSub()); define('SECOND_PARAMETER', $parameter->getSecond()); define('SECOND_SUB_PARAMETER', $parameter->getSub()); define('THIRD_PARAMETER', $parameter->getThird()); define('THIRD_SUB_PARAMETER', $parameter->getSub()); if (LOGGED_IN == TOKEN && FIRST_PARAMETER == 'admin') { define('ADMIN_PARAMETER', $parameter->getAdmin()); define('TABLE_PARAMETER', $parameter->getTable()); define('ID_PARAMETER', $parameter->getId()); define('ALIAS_PARAMETER', $parameter->getAlias()); } else { undefine(array('ADMIN_PARAMETER', 'TABLE_PARAMETER', 'ID_PARAMETER', 'ALIAS_PARAMETER')); } define('LAST_PARAMETER', $parameter->getLast()); define('LAST_SUB_PARAMETER', $parameter->getSub()); define('TOKEN_PARAMETER', $parameter->getToken()); /* define routes */ $router = new Redaxscript\Router($request); $router->init(); define('LITE_ROUTE', $router->getLite()); define('FULL_ROUTE', $router->getFull()); if (function_exists('apache_get_modules') && in_array('mod_rewrite', apache_get_modules()) == '' || file_exists('.htaccess') == '' || FILE == 'install.php') { define('REWRITE_ROUTE', '?p='); define('LANGUAGE_ROUTE', '&l='); define('TEMPLATE_ROUTE', '&t='); } else { define('REWRITE_ROUTE', ''); define('LANGUAGE_ROUTE', '.'); define('TEMPLATE_ROUTE', '.'); } /* define tables */ if (Redaxscript\Registry::get('dbStatus') === 2) { if (FULL_ROUTE == '' || FIRST_PARAMETER == 'admin' && SECOND_PARAMETER == '') { /* check for homepage */ if (s('homepage') > 0) { $table = 'articles'; $id = s('homepage'); } else { $table = 'categories'; $id = 0; /* check order */ if (s('order') == 'asc') { $rank = Redaxscript\Db::forTablePrefix($table)->min('rank'); } else { if (s('order') == 'desc') { $rank = Redaxscript\Db::forTablePrefix($table)->max('rank'); } } /* if category is published */ if ($rank) { $status = Redaxscript\Db::forTablePrefix($table)->where('rank', $rank)->findOne()->status; if ($status == 1) { $id = Redaxscript\Db::forTablePrefix($table)->where('rank', $rank)->findOne()->id; } } } define('FIRST_TABLE', $table); define('SECOND_TABLE', ''); define('THIRD_TABLE', ''); define('LAST_TABLE', $table); } else { if (FIRST_PARAMETER) { define('FIRST_TABLE', query_table(FIRST_PARAMETER)); } else { define('FIRST_TABLE', ''); } if (FIRST_TABLE) { define('SECOND_TABLE', query_table(SECOND_PARAMETER)); } else { define('SECOND_TABLE', ''); } if (SECOND_TABLE) { define('THIRD_TABLE', query_table(THIRD_PARAMETER)); } else { define('THIRD_TABLE', ''); } if (LAST_PARAMETER) { define('LAST_TABLE', query_table(LAST_PARAMETER)); } else { define('LAST_TABLE', ''); } if (LAST_TABLE) { $id = Redaxscript\Db::forTablePrefix(LAST_TABLE)->where('alias', LAST_PARAMETER)->findOne()->id; } } } else { undefine(array('FIRST_TABLE', 'SECOND_TABLE', 'THIRD_TABLE', 'LAST_TABLE')); } /* define ids */ if (LAST_TABLE == 'categories') { define('CATEGORY', $id); define('ARTICLE', ''); define('LAST_ID', $id); } else { if (LAST_TABLE == 'articles') { define('CATEGORY', ''); define('ARTICLE', $id); define('LAST_ID', $id); } else { undefine(array('CATEGORY', 'ARTICLE', 'LAST_ID')); } } /* define content error */ $aliasValidator = new Redaxscript\Validator\Alias(); if (LAST_ID == '' && $aliasValidator->validate(FIRST_PARAMETER, Redaxscript\Validator\Alias::MODE_DEFAULT) == Redaxscript\Validator\ValidatorInterface::FAILED) { define('CONTENT_ERROR', 1); } else { define('CONTENT_ERROR', 0); } /* define user */ $browser = new Redaxscript\Client\Browser($request); $version = new Redaxscript\Client\Version($request); $engine = new Redaxscript\Client\Engine($request); $mobile = new Redaxscript\Client\Mobile($request); $tablet = new Redaxscript\Client\Tablet($request); define('MY_BROWSER', $browser->getOutput()); define('MY_BROWSER_VERSION', $version->getOutput()); define('MY_ENGINE', $engine->getOutput()); define('MY_MOBILE', $mobile->getOutput()); define('MY_TABLET', $tablet->getOutput()); /* if mobile or tablet */ if (MY_MOBILE || MY_TABLET) { define('MY_DESKTOP', ''); } else { $desktop = new Redaxscript\Client\Desktop($request); define('MY_DESKTOP', $desktop->getOutput()); } /* if logged in */ if (LOGGED_IN == TOKEN) { define('MY_ID', $_SESSION[ROOT . '/my_id']); define('MY_NAME', $_SESSION[ROOT . '/my_name']); define('MY_USER', $_SESSION[ROOT . '/my_user']); define('MY_EMAIL', $_SESSION[ROOT . '/my_email']); define('MY_GROUPS', $_SESSION[ROOT . '/my_groups']); /* define access */ $access_array = array('categories', 'articles', 'extras', 'comments', 'groups', 'users'); foreach ($access_array as $value) { define(strtoupper($value) . '_NEW', $_SESSION[ROOT . '/' . $value . '_new']); define(strtoupper($value) . '_EDIT', $_SESSION[ROOT . '/' . $value . '_edit']); define(strtoupper($value) . '_DELETE', $_SESSION[ROOT . '/' . $value . '_delete']); if (TABLE_PARAMETER == 'users' && ID_PARAMETER == MY_ID && $value == 'users') { define('USERS_EXCEPTION', 1); } else { if ($value == 'users') { define('USERS_EXCEPTION', 0); } } } define('MODULES_INSTALL', $_SESSION[ROOT . '/modules_install']); define('MODULES_EDIT', $_SESSION[ROOT . '/modules_edit']); define('MODULES_UNINSTALL', $_SESSION[ROOT . '/modules_uninstall']); define('SETTINGS_EDIT', $_SESSION[ROOT . '/settings_edit']); define('FILTER', $_SESSION[ROOT . '/filter']); } else { define('FILTER', 1); } /* define table access */ define('TABLE_NEW', constant(strtoupper(TABLE_PARAMETER) . '_NEW')); define('TABLE_INSTALL', constant(strtoupper(TABLE_PARAMETER) . '_INSTALL')); define('TABLE_EDIT', constant(strtoupper(TABLE_PARAMETER) . '_EDIT')); define('TABLE_DELETE', constant(strtoupper(TABLE_PARAMETER) . '_DELETE')); define('TABLE_UNINSTALL', constant(strtoupper(TABLE_PARAMETER) . '_UNINSTALL')); /* define time */ define('GMDATE', gmdate('D, d M Y H:i:s') . ' GMT'); define('GMDATE_PLUS_WEEK', gmdate('D, d M Y H:i:s', strtotime('+1 week')) . ' GMT'); define('GMDATE_PLUS_YEAR', gmdate('D, d M Y H:i:s', strtotime('+1 year')) . ' GMT'); define('NOW', date('Y-m-d H:i:s')); Redaxscript\Registry::set('now', NOW); define('DELAY', date('Y-m-d H:i:s', strtotime('+1 minute'))); define('TODAY', date('Y-m-d')); /* future update */ define('UPDATE', $_SESSION[ROOT . '/update']); if (UPDATE == '' && Redaxscript\Registry::get('dbStatus') === 2) { future_update('articles'); future_update('comments'); future_update('extras'); $_SESSION[ROOT . '/update'] = DELAY; } else { if (UPDATE < NOW) { $_SESSION[ROOT . '/update'] = ''; } } }
} /* index */ if (file_exists('modules/' . $value . '/index.php')) { include_once 'modules/' . $value . '/index.php'; } } } /* module init */ Redaxscript\Hook::trigger('init'); /* call loader else render template */ if (FIRST_PARAMETER == 'loader' && (SECOND_PARAMETER == 'styles' || SECOND_PARAMETER == 'scripts')) { echo loader(SECOND_PARAMETER, 'outline'); } else { Redaxscript\Hook::trigger('render_start'); /* undefine */ undefine(array('REFRESH_ROUTE', 'DESCRIPTION', 'KEYWORDS', 'ROBOTS', 'TITLE')); /* render break */ if (Redaxscript\Registry::get('renderBreak')) { return; } else { /* handle error */ if (Redaxscript\Registry::get('centerBreak')) { Redaxscript\Registry::set('contentError', false); } if (Redaxscript\Registry::get('contentError')) { header('http/1.0 404 not found'); } include_once 'templates/' . Redaxscript\Registry::get('template') . '/index.phtml'; } Redaxscript\Hook::trigger('render_end'); }