Exemple #1
0
	public function delete($doAudit = true) {
		// get top level items and delete them, which will delete all children
		$itemTable = new Navigation_Model_Db_Item();
		$select = $itemTable->select()->where('trackId = ?', $this->row->trackId)->where('parentId = 0');
		$rows = $itemTable->fetchAll($select);
		$numRows = count($rows);
		if ($numRows) {
			for ($i = 0; $i < $numRows; $i++) {
				$item = new Navigation_Model_Item();
				$item->row = $rows[$i];
				$item->delete($doAudit);
			}
		}
		parent::delete($doAudit);
	}
	public function getNodesAction() {
		$items = array();
		
		$node = Redokes_Controller_Front::getInstance()->getParam('node');
		
		// if this is the root node, return the tracks
		if ($node == 'rootNode') {

			// select all tracks order by title
			$trackTable = new Navigation_Model_Db_Track();
			$select = $trackTable->select()->order('title');
			$rows = $trackTable->fetchAll($select);
			$numRows = count($rows);
			if ($numRows) {
				for ($i = 0; $i < $numRows; $i++) {
					$items[] = array(
						'text' => $rows[$i]['title'],
						'id' => 'trackId-' . $rows[$i]['trackId'],
						'cls' => 'folder',
						'itemType' => 'track',
						'trackId' => $rows[$i]->trackId,
						'title' => $rows[$i]->title,
						'itemId' => 0,
						'allowDrag' => false
					);
				}
			}
		}
		else if (preg_match('/trackId\-(\d+)/', $node, $matches)) {
			// get the top level children of the track
			$trackId = intval($matches[1]);
			$itemTable = new Navigation_Model_Db_Item();
			$select = $itemTable->select()->where('trackId = ?', $trackId)->where('parentId = 0')->order('sortOrder');
			$rows = $itemTable->fetchAll($select);
			$numRows = count($rows);
			if ($numRows) {
				for ($i = 0; $i < $numRows; $i++) {
					$items[] = array(
						'text' => $rows[$i]['title'],
						'id' => 'itemId-' . $rows[$i]['itemId'],
						'cls' => 'folder',
						'itemType' => 'item',

						'itemId' => $rows[$i]['itemId'],
						'title' => $rows[$i]['title'],
						'trackId' => $rows[$i]['trackId'],
						'parentId' => $rows[$i]['parentId'],
						'url' => $rows[$i]['url'],
						'target' => $rows[$i]['target']
					);
				}
			}
		}
		else if (preg_match('/itemId\-(\d+)/', $node, $matches)) {
			// get the children of this navigation item
			$itemId = intval($matches[1]);
			$item = new Navigation_Model_Item($itemId);
			if ($item->row->itemId) {
				$itemTable = new Navigation_Model_Db_Item();
				$select = $itemTable->select()->where('parentId = ?', $item->row->itemId)->order('sortOrder');
				$rows = $itemTable->fetchAll($select);
				$numRows = count($rows);
				if ($numRows) {
					for ($i = 0; $i < $numRows; $i++) {
						$items[] = array(
							'text' => $rows[$i]['title'],
							'id' => 'itemId-' . $rows[$i]['itemId'],
							'cls' => 'folder',
							'itemType' => 'item',

							'itemId' => $rows[$i]['itemId'],
							'title' => $rows[$i]['title'],
							'trackId' => $rows[$i]['trackId'],
							'parentId' => $rows[$i]['parentId'],
							'url' => $rows[$i]['url'],
							'target' => $rows[$i]['target']
						);
					}
				}
			}
		}

		// encode the array of nodes and output it as plain text
		$this->sendPlainText();
		echo json_encode($items);
	}