init_user(); # make sure the user is logged in before he has access to the # admin section if(!$page->user()->check_role('admin')) header('Location: login.php?message=1'); $page->attr('title','Administrate FTI: Links and Numbers'); // to make jquery be loaded first $page->useJSFile('jquery.min.js'); $page->addJSFile('admin.js'); $page->useCSSFile('admin.css'); $page->content('admin/linksandnumbers.php'); $page->layout('admin_layout.php'); $page->menu('admin/menu.php'); # get news posts $linksandnumbers = xml_get_from_file($FILES['linksandnumbers']); $items = $linksandnumbers->xpath('item'); $page->data('linksandnumbers',$items); if(isset($_REQUEST['do'])) { if($_REQUEST['do'] == 'add' || $_REQUEST['do'] == 'edit') { $page->addJSFile('admin/textboxbuttons.js'); // this may be changed below, if the item is not found $page->content('admin/linksandnumbers.add.edit.php'); if($_GET['do'] == 'edit') { $item = FindItemById($items,$_GET['id']); if(!is_null($item)) { $page->data('item',$item); $page->data('editing',true); } else { $page->addError('Links and numbers item does not exist. Please try again.'); $page->content('admin/linksandnumbers.php'); } } } else if($_REQUEST['do'] == 'delete') { $item = FindItemById($items,$_GET['id']); if(!is_null($item)) { $page->content('admin/linksandnumbers.delete.php'); $page->data('item',$item); } else $page->addError('Links and items number does not exist. Please try again.'); } else if($_REQUEST['do'] == 'reallyadd') { $newItem = $linksandnumbers->addChild('item'); $newItem->addChild('title',stripslashes($_POST['title'])); $newItem->addChild('subtitle',stripslashes($_POST['subtitle'])); $newItem->addChild('type',$_POST['type']); $newItem->addChild('text',""); if(!empty($_POST['title']) && !empty($_POST['text'])) { $nextId = GetNextId($items); $newItem->addAttribute('id',$nextId); if(file_put_contents($FILES['linksandnumbers'],xml_fix_cdata($linksandnumbers->asXML()))) { $page->addMessage('Links and numbers item added.'); $page->data('linksandnumbers',$linksandnumbers->xpath('item')); } else { $page->addError('Could not add links and numbers item. Please try again later.'); $page->data('item',$newItem); $page->addJSFile('admin/textboxbuttons.js'); $page->content('admin/linksandnumbers.add.edit.php'); } } else { $page->addError('Please enter a title and text.'); $page->data('item',$newItem); $page->addJSFile('admin/textboxbuttons.js'); $page->content('admin/linksandnumbers.add.edit.php'); } } else if($_REQUEST['do'] == 'reallyedit') { $itemIdx = FindItemById($items,$_POST['id'],true); $page->data('editing',true); if(!is_null($itemIdx)) { $linksandnumbers->item[$itemIdx]->title = stripslashes($_POST['title']); $linksandnumbers->item[$itemIdx]->subtitle = stripslashes($_POST['subtitle']); $linksandnumbers->item[$itemIdx]->type = $_POST['type']; $linksandnumbers->item[$itemIdx]->text = ""; if(!empty($_POST['title']) && !empty($_POST['text'])) { if(file_put_contents($FILES['linksandnumbers'],xml_fix_cdata($linksandnumbers->asXML()))) $page->addMessage('Links and numbers item saved.'); else { $page->addError('Could not save links and numbers item. Please try again later.'); $page->data('item',$linksandnumbers->item[$itemIdx]); $page->addJSFile('admin/textboxbuttons.js'); $page->content('admin/linksandnumbers.add.edit.php'); } } else { $page->addError('Please enter a title and text.'); $page->data('item',$linksandnumbers->item[$itemIdx]); $page->addJSFile('admin/textboxbuttons.js'); $page->content('admin/linksandnumbers.add.edit.php'); } } else $page->addError('Links and numbers item does not exit. Please try again.'); } else if($_REQUEST['do'] == 'reallydelete') { $itemIdx = FindItemById($items,$_POST['id'],true); if(!is_null($itemIdx)) { unset($linksandnumbers->item[$itemIdx]); if(file_put_contents($FILES['linksandnumbers'],xml_fix_cdata($linksandnumbers->asXML()))) { $page->addMessage('Links and numbers item deleted.'); $page->data('linksandnumbers',$linksandnumbers->xpath('item')); } else { $page->addError('Could not delete news item. Please try again later.'); $page->data('item',$linksandnumbers->item[$itemIdx]); $page->content('admin/linksandnumbers.delete.php'); } } else $page->addError('Links and numbers item does not exist. Please try again.'); } } $page->process(); ################################################################# FindItemById # function FindItemById($items, $itemId, $returnIdx = false) { for($c = 0; $c < count($items); $c++) { if((int)$items[$c]['id'] === (int)$itemId) if($returnIdx) return $c; else return $items[$c]; } return NULL; } #################################################################### GetNextId # function GetNextId($items) { $largestId = 1; for($c = 0; $c < count($items); $c++) { if($largestId < (int)$items[$c]['id']) $largestId = (int)$items[$c]['id']; } return $largestId + 1; } ?>