mysql_query("ALTER TABLE" . $_SESSION['db_bdd'] . ".`{$table[0]}` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci"); } } echo 'document.getElementById("res_step3").innerHTML = "Done!";'; echo 'document.getElementById("loader").style.display = "none";'; echo 'document.getElementById("but_next").disabled = "";'; echo 'document.getElementById("but_launch").disabled = "disabled";'; mysql_close($db_tmp); break; #========================== #========================== case "step4": //include librairies require_once "../sources/NestedTree.class.php"; //Build tree $tree = new NestedTree($_SESSION['tbl_prefix'] . 'nested_tree', 'id', 'parent_id', 'title'); // Database $res = ""; @mysql_connect($_SESSION['db_host'], $_SESSION['db_login'], $_SESSION['db_pw']); @mysql_select_db($_SESSION['db_bdd']); $db_tmp = mysql_connect($_SESSION['db_host'], $_SESSION['db_login'], $_SESSION['db_pw']); mysql_select_db($_SESSION['db_bdd'], $db_tmp); ## Populate table MISC $val = array(array('admin', 'max_latest_items', '10', 0), array('admin', 'enable_favourites', '1', 0), array('admin', 'show_last_items', '1', 0), array('admin', 'enable_pf_feature', '0', 0), array('admin', 'menu_type', 'context', 0), array('admin', 'log_connections', '0', 0), array('admin', 'time_format', 'H:i:s', 0), array('admin', 'date_format', 'd/m/Y', 0), array('admin', 'duplicate_folder', '0', 0), array('admin', 'duplicate_item', '0', 0), array('admin', 'number_of_used_pw', '3', 0), array('admin', 'manager_edit', '1', 0), array('admin', 'cpassman_dir', '', 0), array('admin', 'cpassman_url', '', 0), array('admin', 'favicon', '', 0), array('admin', 'activate_expiration', '0', 0), array('admin', 'pw_life_duration', '30', 0), array('admin', 'maintenance_mode', '1', 1), array('admin', 'cpassman_version', $k['version'], 1), array('admin', 'ldap_mode', '0', 0), array('admin', 'richtext', 0, 0), array('admin', 'allow_print', 0, 0), array('admin', 'show_description', 1, 0), array('admin', 'anyone_can_modify', 0, 0), array('admin', 'nb_bad_authentication', 0, 0), array('admin', 'restricted_to_roles', 0, 0), array('admin', 'utf8_enabled', 1, 0), array('admin', 'custom_logo', '', 0), array('admin', 'custom_login_text', '', 0), array('admin', 'log_accessed', '1', 1), array('admin', 'send_stats', empty($_SESSION['send_stats']) ? '0' : $_SESSION['send_stats'], 1)); $res1 = "na"; foreach ($val as $elem) { //Check if exists before inserting $res_tmp = mysql_fetch_row(mysql_query("SELECT COUNT(*) FROM " . $_SESSION['tbl_prefix'] . "misc WHERE type='" . $elem[0] . "' AND intitule='" . $elem[1] . "'")); if ($res_tmp[0] == 0) { $res1 = mysql_query("INSERT INTO `" . $_SESSION['tbl_prefix'] . "misc` (`type`, `intitule`, `valeur`) VALUES ('" . $elem[0] . "', '" . $elem[1] . "', '" . $elem[2] . "');"); if (!$res1) {
echo '$("#div_add_group").dialog("open");'; echo 'document.getElementById("addgroup_show_error").innerHTML = "' . $txt['error_group_exist'] . '";'; echo '$("#addgroup_show_error").show();'; $create_new_folder = false; } } if ($create_new_folder == true) { $new_id = $db->query_insert("nested_tree", array('parent_id' => $_POST['parent_id'], 'title' => mysql_real_escape_string(stripslashes($_POST['title'])), 'personal_folder' => 0, 'renewal_period' => mysql_real_escape_string(stripslashes($_POST['renewal_period'])), 'bloquer_creation' => '0', 'bloquer_modification' => '0')); //Add complexity $db->query_insert("misc", array('type' => 'complex', 'intitule' => $new_id, 'valeur' => $_POST['complex'])); //Add this folder to the role the creator has foreach (array_filter(explode(';', $_SESSION['fonction_id'])) as $role_id) { $db->query_insert("roles_values", array('folder_id' => $new_id, 'role_id' => $role_id)); } require_once 'NestedTree.class.php'; $tree = new NestedTree($pre . 'nested_tree', 'id', 'parent_id', 'title'); $tree->rebuild(); //Get user's rights IdentificationDesDroits($_SESSION['groupes_visibles'] . ';' . $new_id, $_SESSION['groupes_interdits'], $_SESSION['is_admin'], $_SESSION['fonction_id'], true); //Reload page echo 'RefreshPage("form_groupes");'; } break; //CASE where to update the associated Function //CASE where to update the associated Function case "fonction": $val = explode(';', $_POST['valeur']); $valeur = $_POST['valeur']; //Check if ID already exists $data = $db->fetch_row("SELECT authorized FROM " . $pre . "rights WHERE tree_id = '" . $val[0] . "' AND fonction_id= '" . $val[1] . "'"); if (empty($data[0])) {
<?php #################################################################################################### ## File : items.php ## Author : Nils Laumaillé ## Description : Items page ## ## DON'T CHANGE !!! ## #################################################################################################### require_once "sources/NestedTree.class.php"; $tree = new NestedTree($pre . 'nested_tree', 'id', 'parent_id', 'title'); $tree->rebuild(); $tst = $tree->getDescendants(); //Définir liste des utilisateurs existants $liste_utilisateurs = array(); $tmp = ""; $rows = $db->fetch_all_array("SELECT id,login,email FROM " . $pre . "users ORDER BY login ASC"); foreach ($rows as $record) { $liste_utilisateurs[$record['login']] = array("id" => $record['id'], "login" => $record['login'], "email" => $record['email']); $tmp .= $record['id'] . '.' . $record['login'] . ";"; } //Build list of visible folders $select_visible_folders_options = ""; //Choses cachées echo ' <input type="hidden" name="hid_cat" id="hid_cat" /> <input type="hidden" id="complexite_groupe" /> <input type="text" style="display:none;" name="selected_items" id="selected_items" /> <input type="hidden" name="input_liste_utilisateurs" id="input_liste_utilisateurs" value="' . $tmp . '" /> <input type="hidden" id="bloquer_creation_complexite" />
echo '[{"text":"' . $text . '"}]'; break; //CHANGE FORBIDDEN GROUPS //CHANGE FORBIDDEN GROUPS case "open_div_forgroups": //Check KEY if ($_POST['key'] != $_SESSION['key']) { //error exit; } $text = ""; //Refresh list of existing functions $data_user = $db->fetch_row("SELECT groupes_interdits FROM " . $pre . "users WHERE id = " . $_POST['id']); $user = explode(';', $data_user[0]); require_once "NestedTree.class.php"; $tree = new NestedTree($pre . 'nested_tree', 'id', 'parent_id', 'title'); $tree_desc = $tree->getDescendants(); foreach ($tree_desc as $t) { if (in_array($t->id, $_SESSION['groupes_visibles']) && !in_array($t->id, $_SESSION['personal_visible_groups'])) { $text .= '<input type="checkbox" id="cb_change_forgroup-' . $t->id . '"'; $ident = ""; for ($y = 1; $y < $t->nlevel; $y++) { $ident .= " "; } if (in_array($t->id, $user)) { $text .= ' checked'; } $text .= '> ' . $ident . $t->title . '<br />'; $prev_level = $t->nlevel; } }
// send as HTML $mail->Subject = $txt['forgot_pw_email_subject_confirm']; $mail->AltBody = strip_tags($txt['forgot_pw_email_body']) . " " . $new_pw_not_crypted; $mail->Body = $txt['forgot_pw_email_body'] . " " . $new_pw_not_crypted; //send email if ($mail->Send()) { echo 'done'; } else { echo $mail->ErrorInfo; } } break; case "get_folders_list": /* Get full tree structure */ require_once "NestedTree.class.php"; $tree = new NestedTree($pre . 'nested_tree', 'id', 'parent_id', 'title'); $folders = $tree->getDescendants(); $arrOutput = array(); /* Build list of all folders */ $folders_list = "\\'0\\':\\'" . $txt['root'] . "\\'"; foreach ($folders as $f) { //Be sure that user can only see folders he/she is allowed to if (!in_array($f->id, $_SESSION['forbiden_pfs'])) { $display_this_node = false; // Check if any allowed folder is part of the descendants of this node $node_descendants = $tree->getDescendants($f->id, true, false, true); foreach ($node_descendants as $node) { if (in_array($node, $_SESSION['groupes_visibles'])) { $display_this_node = true; break; }
echo '[{"result" : "pf_done"}]'; break; ########################################################### #CASE for deleting all items from DB that are linked to a folder that has been deleted ########################################################### #CASE for deleting all items from DB that are linked to a folder that has been deleted case "admin_action_db_clean_items": //Libraries call require_once "NestedTree.class.php"; require_once "main.functions.php"; //init $folders_ids = array(); $text = ""; $nb_items_deleted = 0; // prepare full tree $tree = new NestedTree($pre . 'nested_tree', 'id', 'parent_id', 'title'); // Get an array of all folders $folders = $tree->getDescendants(); foreach ($folders as $folder) { if (!in_array($folder->id, $folders_ids)) { array_push($folders_ids, $folder->id); } } $items = $db->fetch_all_array("SELECT id,label FROM " . $pre . "items WHERE id_tree NOT IN(" . implode(',', $folders_ids) . ")"); foreach ($items as $item) { $text .= $item['label'] . "[" . $item['id'] . "] - "; //Delete item $db->query("DELETE FROM " . $pre . "items WHERE id = " . $item['id']); //log $db->query("DELETE FROM " . $pre . "log_items WHERE id_item = " . $item['id']); $nb_items_deleted++;
function IdentificationDesDroits($groupes_visibles_user, $groupes_interdits_user, $is_admin, $id_fonctions, $refresh) { global $server, $user, $pass, $database, $pre; //include librairies require_once "NestedTree.class.php"; require_once "class.database.php"; $db = new Database($server, $user, $pass, $database, $pre); $db->connect(); //Check if user is ADMINISTRATOR if ($is_admin == 1) { $groupes_visibles = array(); $_SESSION['groupes_visibles'] = array(); $_SESSION['groupes_interdits'] = array(); $_SESSION['personal_visible_groups'] = array(); $_SESSION['groupes_visibles_list'] = ""; $rows = $db->fetch_all_array("SELECT id FROM " . $pre . "nested_tree WHERE personal_folder = '0'"); foreach ($rows as $record) { array_push($groupes_visibles, $record['id']); } $_SESSION['groupes_visibles'] = $groupes_visibles; //Exclude all PF $_SESSION['forbiden_pfs'] = array(); $sql = "SELECT id FROM " . $pre . "nested_tree WHERE personal_folder = 1"; if (isset($_SESSION['settings']['enable_pf_feature']) && $_SESSION['settings']['enable_pf_feature'] == 1) { $sql .= " AND title != '" . $_SESSION['user_id'] . "'"; } //Get ID of personal folder $pf = $db->fetch_array("SELECT id FROM " . $pre . "nested_tree WHERE title = '" . $_SESSION['user_id'] . "'"); if (!empty($pf[0])) { if (!in_array($pf[0], $_SESSION['groupes_visibles'])) { array_push($_SESSION['groupes_visibles'], $pf[0]); array_push($_SESSION['personal_visible_groups'], $pf[0]); //get all descendants $tree = new NestedTree($pre . 'nested_tree', 'id', 'parent_id', 'title', 'personal_folder'); $tree->rebuild(); $tst = $tree->getDescendants($pf[0]); foreach ($tst as $t) { array_push($_SESSION['groupes_visibles'], $t->id); array_push($_SESSION['personal_visible_groups'], $t->id); } } } $_SESSION['groupes_visibles_list'] = implode(',', $_SESSION['groupes_visibles']); $_SESSION['is_admin'] = $is_admin; //Check if admin has creating Folders and Roles $ret = $db->fetch_row("SELECT COUNT(*) FROM " . $pre . "nested_tree"); $_SESSION['nb_folders'] = $ret[0]; $ret = $db->fetch_row("SELECT COUNT(*) FROM " . $pre . "roles_title"); $_SESSION['nb_roles'] = $ret[0]; } else { //init $_SESSION['groupes_visibles'] = array(); $_SESSION['groupes_interdits'] = array(); $_SESSION['personal_visible_groups'] = array(); $groupes_visibles = array(); $groupes_interdits = array(); $groupes_interdits_user = explode(';', TrimElement($groupes_interdits_user, ";")); if (!empty($groupes_interdits_user) && count($groupes_interdits_user) > 0) { $groupes_interdits = $groupes_interdits_user; } $_SESSION['is_admin'] = $is_admin; $fonctions_associees = explode(';', TrimElement($id_fonctions, ";")); $new_liste_gp_visibles = array(); $liste_gp_interdits = array(); $list_allowed_folders = array(); $list_forbiden_folders = array(); //build Tree require_once "NestedTree.class.php"; $tree = new NestedTree($pre . 'nested_tree', 'id', 'parent_id', 'title'); //rechercher tous les groupes visibles en fonction des roles de l'utilisateur foreach ($fonctions_associees as $role_id) { if (!empty($role_id)) { //Get allowed folders for each Role $rows = $db->fetch_all_array("SELECT folder_id FROM " . $pre . "roles_values WHERE role_id=" . $role_id); foreach ($rows as $record) { if (isset($record['folder_id']) && !in_array($record['folder_id'], $list_allowed_folders)) { array_push($list_allowed_folders, $record['folder_id']); } } } } // => Build final lists //Clean arrays $allowed_folders_tmp = array(); $list_allowed_folders = array_unique($list_allowed_folders); //Add user allowed folders $allowed_folders_tmp = array_unique(array_merge($list_allowed_folders, explode(';', TrimElement($groupes_visibles_user, ";")))); //Exclude from allowed folders all the specific user forbidden folders $allowed_folders = array(); foreach ($allowed_folders_tmp as $id) { if (!in_array($id, $groupes_interdits_user)) { array_push($allowed_folders, $id); } } //Clean array $list_allowed_folders = array_filter(array_unique($list_allowed_folders)); //Exclude all PF $_SESSION['forbiden_pfs'] = array(); $sql = "SELECT id FROM " . $pre . "nested_tree WHERE personal_folder = 1"; if (isset($_SESSION['settings']['enable_pf_feature']) && $_SESSION['settings']['enable_pf_feature'] == 1) { $sql .= " AND title != '" . $_SESSION['user_id'] . "'"; } $pfs = $db->fetch_all_array($sql); foreach ($pfs as $pf_id) { array_push($_SESSION['forbiden_pfs'], $pf_id['id']); } //Get ID of personal folder if (isset($_SESSION['settings']['enable_pf_feature']) && $_SESSION['settings']['enable_pf_feature'] == 1) { $pf = $db->fetch_row("SELECT id FROM " . $pre . "nested_tree WHERE title = '" . $_SESSION['user_id'] . "'"); if (!empty($pf[0])) { if (!in_array($pf[0], $list_allowed_folders)) { //get all descendants $ids = $tree->getDescendants($pf[0], true); foreach ($ids as $id) { array_push($list_allowed_folders, $id->id); array_push($_SESSION['personal_visible_groups'], $id->id); } } } } $_SESSION['groupes_visibles'] = $list_allowed_folders; $_SESSION['groupes_visibles_list'] = implode(',', $list_allowed_folders); } }
*/ case 'lister_items_groupe': $arbo_html = $html = ""; $folder_is_pf = $show_error = 0; $items_id_list = $rights = array(); //Build query limits if (empty($_POST['start'])) { $start = 0; $html = '<ul class="liste_items">'; } else { $start = $_POST['start']; $html = '<ul class="liste_items" style="">'; } //Prepare tree require_once "NestedTree.class.php"; $tree = new NestedTree($pre . 'nested_tree', 'id', 'parent_id', 'title'); $arbo = $tree->getPath($_POST['id'], true); foreach ($arbo as $elem) { if ($elem->title == $_SESSION['user_id'] && $elem->nlevel == 1) { $elem->title = $_SESSION['login']; $folder_is_pf = 1; } if (empty($arbo_html)) { $arbo_html = htmlspecialchars(stripslashes($elem->title), ENT_QUOTES); } else { $arbo_html .= " » " . htmlspecialchars(stripslashes($elem->title), ENT_QUOTES); } } //check if this folder is a PF. If yes check if saltket is set if ((!isset($_SESSION['my_sk']) || empty($_SESSION['my_sk'])) && $folder_is_pf == 1) { $show_error = "is_pf_but_no_saltkey";
<?php // no direct access defined('PARENT_FILE') or die('Restricted access'); if ($this->authorize()) { // start tree class $tree = new NestedTree($this->registry->core . 'menu_items', $this->registry->params['id'], 'item'); $rows = $tree->numDecendants(true); $menuBar = array('menus' => '/menu/overview', 'new_link' => '/menu/view/id-' . $this->registry->params['id'] . '/action-new'); $this->content .= $this->makeToolbar($menuBar, 24); if ($rows > 0) { $items = $tree->getDecendants(true); $c = 0; $data = array(); foreach ($items as $row) { if ($row['depth'] > 0) { if ($row['depth'] > 1) { $r = str_repeat(' ', $row['depth'] - 1); $r .= "• " . $row['item']; $data[$c][] = $r; } else { $data[$c][] = $row['item']; } $data[$c][] = '<a href="/menu/view/id-' . $this->registry->params['id'] . '/action-edit/item-' . $row['item_id'] . '"><img src="/images/24x24/Edit3.png" class="Tips" title="Edit Item" rel="Click to edit the ' . $row['item'] . ' menu" /></a>'; $data[$c][] = '<a href="/menu/view/id-' . $this->registry->params['id'] . '/action-delete/item-' . $row['item_id'] . '" ><img src="/images/24x24/DeleteRed.png" class="Tips" title="Delete item" rel="Click to delete the ' . $row['category'] . ' item" /></a>'; $c++; } } $header = array('Menu Item', '', ''); $table = $this->dataTable($data, $header); } else {
* @copyright (c) 2009-2011 Nils Laumaillé * @licensing CC BY-ND (http://creativecommons.org/licenses/by-nd/3.0/legalcode) * @link http://cpassman.org * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ if (!isset($_SESSION['CPM']) || $_SESSION['CPM'] != 1) { die('Hacking attempt...'); } /* load help*/ require_once 'includes/language/' . $_SESSION['user_language'] . '_admin_help.php'; /* Get full tree structure */ require_once "sources/NestedTree.class.php"; $tree = new NestedTree($pre . 'nested_tree', 'id', 'parent_id', 'title'); $tst = $tree->getDescendants(); /* Build list of all folders */ if ($_SESSION['is_admin'] == 1 || $_SESSION['can_create_root_folder'] == 1) { $folders_list = "\\'0\\':\\'" . $txt['root'] . "\\'"; } else { $folders_list = ""; } $ident = ""; foreach ($tst as $t) { if (in_array($t->id, $_SESSION['groupes_visibles']) && !in_array($t->id, $_SESSION['personal_visible_groups'])) { if ($t->nlevel == 1) { $ident = ">"; } if ($t->nlevel == 2) { $ident = "->";
protected function queryMenu($menu_id) { $menu = array(); if ($this->status == "LI") { $status = "LO"; } else { $status = "LI"; } $tree = new NestedTree($this->db_table . 'menu_items', $menu_id, 'item'); $decendants = $tree->getDecendants(true); $search_categories = null; if ($decendants) { foreach ($decendants as $key => $value) { $search_categories .= $decendants[$key]['item_id'] . ','; } $search_categories = substr($search_categories, 0, -1); $fields = 'item_id, item, status, url, enssl, page_id'; $join = array($this->registry->core . 'menu_link_status', $this->db_table . 'menu_urls'); $result = $this->registry->db->getResult($fields, 'menu_items', $join, array('WHERE' => "status != '" . $status . "'", 'AND' => 'item_id IN (' . $search_categories . ')', 'ORDER BY' => 'lft ASC')); } else { $result = false; } if ($result) { foreach ($result as $row) { $menu[] = Uthando::objectToArray($row); } foreach ($menu as $key => $value) { $return_menu[$key] = $value; if (is_numeric($value['page_id'])) { $page = $this->registry->db->getResult('page', $this->db_table . 'pages', null, array('WHERE' => 'page_id=' . $value['page_id']), false); $return_menu[$key]['page'] = $page->page; } $return_menu[$key]['lft'] = $decendants[$key]['lft']; $return_menu[$key]['rgt'] = $decendants[$key]['rgt']; $return_menu[$key]['depth'] = $decendants[$key]['depth'] - 1; } if ($return_menu) { foreach ($return_menu as $key => $value) { $category[$key] = $value['lft']; } array_multisort($category, SORT_ASC, $return_menu); } return $return_menu; } else { return false; } }
* @author Nils Laumaillé * @version 2.0 * @copyright (c) 2009-2011 Nils Laumaillé * @licensing CC BY-ND (http://creativecommons.org/licenses/by-nd/3.0/legalcode) * @link http://cpassman.org * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ if (!isset($_SESSION['CPM']) || $_SESSION['CPM'] != 1) { die('Hacking attempt...'); } //Call nestedtree library and load full tree require_once "sources/NestedTree.class.php"; $tree = new NestedTree($pre . 'nested_tree', 'id', 'parent_id', 'title'); $tree->rebuild(); $full_tree = $tree->getDescendants(); echo ' <div style="line-height: 24px;margin-top:10px;min-height:220px;"> <span class="ui-icon ui-icon-person" style="float: left; margin-right: .3em;"> </span> ' . $txt['index_welcome'] . ' <b>' . $_SESSION['login'] . '</b><br />'; //Check if password is valid if (empty($_SESSION['last_pw_change']) || $_SESSION['validite_pw'] == false) { echo ' <div style="margin:auto;padding:4px;width:300px;" class="ui-state-focus ui-corner-all"> <h3>' . $txt['index_change_pw'] . '</h3> <div style="height:20px;text-align:center;margin:2px;display:none;" id="change_pwd_error" class=""></div> <div id="pw_strength" style="margin:0 0 10px 30px;"></div> <table> <tr>
<?php // no direct access defined('PARENT_FILE') or die('Restricted access'); if ($this->authorize()) { $tree = new NestedTree($this->registry->core . 'menu_items', null, 'item'); $tree->linked_columns = array('menu_type' => $this->registry->core . 'menu_types'); $menus = $tree->getTopLevelTree(); if (count($menus) > 0) { $c = 0; $data = array(); foreach ($menus as $row) { $tree->setId($row['item_id']); $num_items = $tree->numDecendants(true); $data[$c] = array($row['item'], $row['menu_type'], '' . $num_items . '', '<a href="/menu/edit/id-' . $row['item_id'] . '" style="text-decoration:none;" ><img src="/templates/' . $this->get('admin_config.site.template') . '/images/24x24/Edit3.png" class="Tips" title="Edit Menu" rel="Click to edit the ' . $row['item'] . ' menu" /></a>', '<a href="/menu/view/id-' . $row['item_id'] . '" style="text-decoration:none;" ><img src="/templates/' . $this->get('admin_config.site.template') . '/images/24x24/Preview.png" class="Tips" title="View Menu" rel="Click to view the ' . $row['item'] . ' items" /></a>', '<a href="/menu/delete/id-' . $row['item_id'] . '"><img src="/templates/' . $this->get('admin_config.site.template') . '/images/24x24/DeleteRed.png" class="Tips" title="Delete Menu" rel="Click to delete the ' . $row['item'] . ' menu" /></a>'); $c++; } $header = array('Menu', 'Menu Type', 'Items', '', '', ''); $table = $this->dataTable($data, $header); } else { $params = array('TYPE' => 'info', 'MESSAGE' => '<h2>There are currently no records.</h2>'); } $menuBar = array('new_menu' => '/menu/new'); $this->content .= $this->makeToolbar($menuBar, 24); if (count($menus) > 0) { $this->content .= '<div id="tableWrap">'; $this->content .= $table->toHtml(); $this->content .= '</div>'; } else { $this->content .= $this->message($params); }
/** * UpdateCacheTable() * * Update the CACHE table */ function UpdateCacheTable($action, $id = "") { global $db, $server, $user, $pass, $database, $pre; //include librairies require_once "NestedTree.class.php"; //Build tree $tree = new NestedTree($pre . 'nested_tree', 'id', 'parent_id', 'title'); //Rebuild full cache table if ($action == "reload") { //truncate table $db->query("TRUNCATE TABLE " . $pre . "cache"); //reload date $sql = "SELECT *\r\n FROM " . $pre . "items\r\n WHERE inactif=0"; $rows = $db->fetch_all_array($sql); foreach ($rows as $reccord) { //Get all TAGS $tags = ""; $item_tags = $db->fetch_all_array("SELECT tag FROM " . $pre . "tags WHERE item_id=" . $reccord['id']); foreach ($item_tags as $item_tag) { if (!empty($item_tag['tag'])) { $tags .= $item_tag['tag'] . " "; } } //form id_tree to full foldername $folder = ""; $arbo = $tree->getPath($reccord['id_tree'], true); foreach ($arbo as $elem) { if ($elem->title == $_SESSION['user_id'] && $elem->nlevel == 1) { $elem->title = $_SESSION['login']; } if (empty($folder)) { $folder = stripslashes($elem->title); } else { $folder .= " » " . stripslashes($elem->title); } } //store data $db->query_insert("cache", array('id' => $reccord['id'], 'label' => $reccord['label'], 'description' => $reccord['description'], 'tags' => $tags, 'id_tree' => $reccord['id_tree'], 'perso' => $reccord['perso'], 'restricted_to' => $reccord['restricted_to'], 'login' => $reccord['login'], 'folder' => $folder)); } //UPDATE an item } else { if ($action == "update_value") { //get new value from db $sql = "SELECT label, description, id_tree, perso, restricted_to, login\r\n FROM " . $pre . "items\r\n WHERE id=" . $id; $row = $db->query($sql); $data = $db->fetch_array($row); //Get all TAGS $tags = ""; $item_tags = $db->fetch_all_array("SELECT tag FROM " . $pre . "tags WHERE item_id=" . $id); foreach ($item_tags as $item_tag) { if (!empty($item_tag['tag'])) { $tags .= $item_tag['tag'] . " "; } } //form id_tree to full foldername $folder = ""; $arbo = $tree->getPath($data['id_tree'], true); foreach ($arbo as $elem) { if ($elem->title == $_SESSION['user_id'] && $elem->nlevel == 1) { $elem->title = $_SESSION['login']; } if (empty($folder)) { $folder = stripslashes($elem->title); } else { $folder .= " » " . stripslashes($elem->title); } } //finaly update $db->query_update("cache", array('label' => $data['label'], 'description' => $data['description'], 'tags' => $tags, 'id_tree' => $data['id_tree'], 'perso' => $data['perso'], 'restricted_to' => $data['restricted_to'], 'login' => $data['login'], 'folder' => $folder), "id='" . $id . "'"); //ADD an item } else { if ($action == "add_value") { //get new value from db $sql = "SELECT label, description, id_tree, perso, restricted_to, id, login\r\n FROM " . $pre . "items\r\n WHERE id=" . $id; $row = $db->query($sql); $data = $db->fetch_array($row); //Get all TAGS $tags = ""; $item_tags = $db->fetch_all_array("SELECT tag FROM " . $pre . "tags WHERE item_id=" . $id); foreach ($item_tags as $item_tag) { if (!empty($item_tag['tag'])) { $tags .= $item_tag['tag'] . " "; } } //form id_tree to full foldername $folder = ""; $arbo = $tree->getPath($row['id_tree'], true); foreach ($arbo as $elem) { if ($elem->title == $_SESSION['user_id'] && $elem->nlevel == 1) { $elem->title = $_SESSION['login']; } if (empty($folder)) { $folder = stripslashes($elem->title); } else { $folder .= " » " . stripslashes($elem->title); } } //finaly update $db->query_insert("cache", array('id' => $data['id'], 'label' => $data['label'], 'description' => $data['description'], 'tags' => $tags, 'id_tree' => $data['id_tree'], 'perso' => $data['perso'], 'restricted_to' => $data['restricted_to'], 'login' => $data['login'], 'folder' => $folder)); //DELETE an item } else { if ($action == "delete_value") { mysql_query("DELETE FROM " . $pre . "cache WHERE id = " . $id); } } } } }