Exemple #1
0
function dev_assoc_to_session($assoc, $expire = '3600', $path = '', $secure = false, $httponly = false)
{
    if (dev_is_assoc($assoc)) {
        foreach ($assoc as $a => $b) {
            dev_set_session($a, $b, $expire, $path, $secure, $httponly);
        }
    }
}
    function drawControl()
    {
        //Author: Devon .M. Scott
        //Database and file management vars.
        //$action = (isset($_POST['action']) && $_POST['action'] != '') ? $_POST['action'] : $_GET['action'];
        $view = isset($_POST['view']) && $_POST['view'] != '' ? $_POST['view'] : (isset($_GET['view']) && $_GET['view'] != '' ? $_GET['view'] : (isset($_COOKIE['view']) && $_COOKIE['view'] != '' ? $_COOKIE['view'] : 'select'));
        $file = isset($_POST['file']) && $_POST['file'] != '' ? $_POST['file'] : $_GET['file'];
        $dir = isset($_POST['dir']) && $_POST['dir'] != '' ? $_POST['dir'] : $_GET['dir'];
        $action = isset($_POST['action']) && $_POST['action'] != '' ? $_POST['action'] : $_GET['action'];
        $mode = isset($_POST['mode']) && $_POST['mode'] != '' ? $_POST['mode'] : $_GET['mode'];
        $options_on = $this->getOptionsOn();
        $href = dev_href($this->getHref($href));
        //$href = 'index.php';
        $output = '';
        $status = '';
        if (count($this->getOptions()) <= 0) {
            $option_list = new DevObject(DEV_OPTIONS);
            $option_list->clearMembers();
            $option_list->setCondition('option_enable', '=', '1');
            $option_list->setCondition('option_group', '=', $this->getTables());
            $options_set = array();
            foreach ($option_list->createMemberArray() as $a) {
                $options_set[] = $a['option_name'];
            }
        } else {
            $options_set = $this->getOptions();
        }
        if (!in_array($action, $options_set) && $options_on === true) {
            if ($action != '') {
                $output .= '<b>You do not have permission to take this action.</b><br /><br />';
            }
            $action = 'list';
        }
        $option = array();
        $image_dir = $this->getWSPath() . $this->getImageDir();
        $image_upload_dir = $this->getFSPath() . $this->getImageDir();
        $file_dir = $this->getWSPath() . $this->getFileDir();
        $file_upload_dir = $this->getFSPath() . $this->getFileDir();
        $query = array();
        //$filedir = 'filedir/';
        if ($dir != $file_upload_dir && $dir != '') {
            $query['d'] = $dir;
            $file_upload_dir = $dir;
        }
        $object = $this->getControlObject(0);
        $options = array();
        if ($this->getLogo() != '') {
            $output .= dev_print_image($this->getLogo());
        }
        if ($this->getTitle() != '') {
            $output .= "<h1>" . $this->getTitle() . "</h1>";
        }
        //$object->toggleActiveFieldsOn(true);
        $object->clearMembers();
        $object->setActiveFields($this->getFieldHeaders());
        $entry_id_var = $object->getPrimaryKey();
        ${$entry_id_var} = isset($_POST[$entry_id_var]) && $_POST[$entry_id_var] != '' ? $_POST[$entry_id_var] : $_GET[$entry_id_var];
        //$files = new DevObject('files');
        //$files->clearMembers();
        if ($action == 'edit' || $action == 'delete' || $action == 'manageimages' || $action == 'changeimages' || $action == 'upload' || $action == 'view' || $action == 'default') {
            //$object->loadFreshMembers();
            $object->clearMembers();
            $object->loadGetVars();
            $object->loadPostVars();
            if ($action == 'default' || $action == 'view') {
                $object->loadArrayVars($this->getFieldDefaults());
            }
            $object->loadMembers();
            foreach ($object->getMemberArray() as $a => $b) {
                global ${$a};
                ${$a} = $b;
            }
            //echo $object->getQuery();
        } elseif ($action == 'deletefile') {
            $files->loadFreshMembers();
            foreach ($files->getMemberArray() as $a => $b) {
                ${$a} = $b;
            }
        }
        $delete_form = '
	Really delete entry \'' . ${$entry_id_var} . '\' From the database? (Deletion is NOT undoable).<br />' . dev_draw_form_field('hidden', $entry_id_var, '', ${$entry_id_var}) . '<a href="' . $href . '?action=edit&' . $entry_id_var . '=' . ${$entry_id_var} . '">No, return to this entry</a><br /><br />' . '<input type="submit" value="Yes, Delete Forever" /><br />';
        //$options[] = '<a href="' . $href . '?action=edit&' . $entry_id_var . '=' . $$entry_id_var . '">No, return to this entry</a>';
        /*
        $delete_file_form = '
        Really delete file \'' . $files_document . '\'? (Deletion is NOT undoable).<br />' .
        dev_draw_form_field('hidden', $entry_id_var, '', $$entry_id_var) .
        dev_draw_form_field('hidden', 'files_id', '', $files_id) .
        '<a href="' . $href . '?action=managefiles&' . $entry_id_var . '=' . $$entry_id_var . '">No, return to this entry\'s files</a><br /><br />' . 
        '<input type="submit" value="Yes, Delete Forever" /><br />';
        */
        $delete_file_form .= "Really delete file '{$file}'? (Deletion is <b>NOT</b> undoable).<br />\n" . '<a href="' . $href . '?dir=' . $dir . '&file=' . $file . '&action=removefile">Yes, delete forever.</a><br /><br />' . '<a href="' . $href . '?dir=' . $dir . '&action=listfiles">Back to List</a><br /><br />';
        //$options[] = '<a href="' . $href . '?action=managefiles&' . $entry_id_var . '=' . $$entry_id_var . '">No, return to this entry\'s files</a>';
        $static_fields_r = array();
        foreach ($object->getFullFieldArray() as $a => $b) {
            $static_fields_r[$a] = 'static';
        }
        //$view_form = $this->drawManageForm($object, 'View Details', $static_fields_r, 'Edit', 'Reset');
        $view_form = dev_detail_box($object->getFullFieldArray());
        $edit_form = $this->drawManageForm($object, 'Manage Entry', $this->getFieldTypes(), 'Submit', 'Clear', $action == 'edit' || $action == 'new' || $action == 'post' ? true : false);
        $mail_form = $this->drawManageForm($object, 'Send Message', $this->getFieldTypes(), 'Send', 'Clear');
        //$options[] = '<a href="' . $href . '?action=new">Create New</a>';
        //$options[] = '<a href="' . $href . '?action=list">Back to List</a>';
        /*
        $upload_form = '<a href="' . $href . '?action=edit&' . $entry_id_var . '=' . $_GET[$entry_id_var] . '">Return to this entry</a><br /><br />' . 
        '<a href="' . $href . '?action=managefiles&' . $entry_id_var . '=' . $_GET[$entry_id_var] . '">Manage existing uploaded files</a><br /><br />' . 
        	'Upload files to associate to your entry<br />' . 
        	dev_draw_form_field('hidden', $entry_id_var, '', $_GET[$entry_id_var]) .
        	dev_draw_form_field('hidden', 'MAX_FILE_SIZE', '', '1024000000') .
        	dev_draw_form_field('text', 'project_program_title', 'Programs Title', $project_programs_title) .
        	dev_draw_form_field('file', 'program', 'Programs', $programs) .
        	dev_draw_form_field('text', 'project_minutes_title', 'Minutes Title', $project_minutes_title) .
        	dev_draw_form_field('file', 'minutes', 'Minutes', $minutes) .
        	dev_draw_form_field('text', 'project_notices_title', 'Notices Title', $project_notices_title) .
        	dev_draw_form_field('file', 'notices', 'Notices', $notices) .
        	dev_draw_form_field('text', 'project_images_title', 'Images Title', $project_images_title) .
        	dev_draw_form_field('file', 'images', 'Images', $images) .
        	dev_draw_form_field('text', 'project_misc_title', 'Miscellaneous Title', $project_misc_title) .
        	dev_draw_form_field('textarea', 'project_misc', 'Miscellaneous', $project_misc) .
        	'<input type="submit" value="Upload" />';
        */
        $upload_form = dev_draw_form_field('hidden', 'dir', '', $dir) . dev_draw_form_field('file', 'file', 'File') . dev_draw_form_field('submit', 'uploadfiles', 'Upload', 'Upload');
        $edit_file_form = '<a href="' . $href . '?dir=' . $dir . '&file=' . $file . '&action=edit&mode=richtext">Rich Text Mode</a><br /><br />';
        //dev_draw_form_field('hidden', 'action', '', 'savefile') .
        dev_edit_file($dir . $file);
        $view_file_form = dev_draw_form_field('hidden', 'dir', '', $dir) . dev_draw_form_field('static', 'file', 'Filename', $file) . dev_draw_form_field('static', 'data', 'Data', dev_view_file($dir . $file)) . dev_draw_form_field('submit', 'editfile', 'Edit', 'Edit');
        //$options[] = '<a href="' . $href . '?action=edit&' . $entry_id_var . '=' . $_GET[$entry_id_var] . '">Return to this entry</a>';
        //$options[] = '<a href="' . $href . '?action=managefiles&' . $entry_id_var . '=' . $_GET[$entry_id_var] . '">Manage existing uploaded files</a>';
        $output .= dev_draw_form();
        switch ($action) {
            case 'remove':
                if ($_POST[$entry_id_var] != '' && $_POST[$entry_id_var] > 0) {
                    $object->clearMembers();
                    $object->loadPostVars();
                    $status .= $object->deleteObject() ? "Successfully Deleted Entry " : "Deletion Failed";
                    $object->clearMembers();
                }
            default:
            case 'list':
                //$object->setSortOrder('entry_name', 'ASC');
                $action = 'edit';
                $field_names = array_values($this->getFieldHeaders());
                if (is_array($field_names)) {
                    $object->setSortOrder($field_names[1], 'ASC');
                }
                $object->loadPostVars();
                $object->setDistinction($entry_id_var);
                $options['new'] = '<a href="' . $href . '?action=new">' . $this->getIcon('new') . 'Create New</a>';
                $options['search'] = '<a href="' . $href . '?action=search">' . $this->getIcon('search') . 'Search</a>';
                $query_r = array('action' => 'view');
                //$output .= dev_content_box($object->createMemberArray(), '', $href, $query_r, '#c0c0c0', '', '1', true, '../forum/');
                //$output .= dev_list_results($object->createMemberArray(), 'begin', 'end', $href, true, 1, $query_r, '', $image_dir, $file_dir, $this->getFieldHeaders());
                $output .= 'View: <a href="' . $href . '?view=icon">icons</a> | <a href="' . $href . '?view=search">list</a> | <a href="' . $href . '?view=select">selection</a><br />';
                $output .= dev_display_box($object->createMemberArray(), $view, $href, $query_r, '#c0c0c0', $this->getFieldHeaders(), '1', true, $image_dir, $file_dir, '', 15);
                break;
            case 'advancedsearch':
                //if ($action == 'advancedsearch') {
                $options['search'] = '<a href="' . $href . '?action=search">' . $this->getIcon('search') . 'Basic Search</a>';
                $options['new'] = '<a href="' . $href . '?action=new">' . $this->getIcon('new') . 'Create New</a>';
                $options['list'] = '<a href="' . $href . '?action=list">' . $this->getIcon('list') . 'Back to List</a>';
                //$output .= dev_draw_form() .
                $action = 'list';
                $output .= dev_draw_form_field('hidden', 'view', '', 'search') . $object->drawForm($field_types) . dev_draw_form_field('submit', 'submit', 'Finding...', 'Find');
                //dev_close_form();
                //}
                break;
            case 'search':
                //if ($action == 'search') {
                $options['advancedsearch'] = '<a href="' . $href . '?action=advancedsearch">' . $this->getIcon('advancedsearch') . 'Advanced Search</a>';
                $options['new'] = '<a href="' . $href . '?action=new">' . $this->getIcon('new') . 'Create New</a>';
                $options['list'] = '<a href="' . $href . '?action=list">' . $this->getIcon('list') . 'Back to List</a>';
                $field_names = array_values($this->getFieldHeaders());
                //$object->setDistinction($entry_id_var);
                //$object->setSortOrder('entry_location', 'ASC');
                $action = 'list';
                $output .= '<table>' . dev_draw_form_field('hidden', 'view', '', 'search') . $object->formField($field_names[1]) . '</table>' . dev_draw_form_field('submit', 'submit', 'Finding...', 'Find');
                //dev_close_form();
                //}
                break;
                //OBJECT ACTION CASES
            //OBJECT ACTION CASES
            case 'save':
                $action = 'save';
                $object->loadPostVars();
                $success = dev_save_file($file, $view_form, $mode);
                $options['back'] = strpos($success, 'successful') === false ? ' <a class="dev_option" href="javascript:history.back(1)">' . $this->getIcon('back') . 'Go back</a>' : '';
                break;
            case 'cookie':
                $action = 'cookie';
                $object->loadPostVars();
                foreach ($object->getMemberArray() as $a => $b) {
                    $success .= dev_set_cookie($a, $b);
                }
                $options['back'] = !$success ? ' <a class="dev_option" href="javascript:history.back(1)">' . $this->getIcon('back') . 'Go back</a>' : '';
                break;
            case 'session':
                $action = 'save';
                $object->loadPostVars();
                foreach ($object->getMemberArray() as $a => $b) {
                    $success .= dev_set_session($a, $b);
                }
                $options['back'] = !$success ? ' <a class="dev_option" href="javascript:history.back(1)">' . $this->getIcon('back') . 'Go back</a>' : '';
                break;
            case 'sendmail':
                $action = 'semdmail';
                $sucess = dev_send_email($rcpt, $from, $subject, $message, $cc, $bcc, $html, $headers_r, $additional);
                $options['back'] = strpos($success, 'successful') === false ? ' <a class="dev_option" href="javascript:history.back(1)">' . $this->getIcon('back') . 'Go back</a>' : '';
            case 'mail':
                $action = 'sendmail';
                $output .= $mail_form;
                break;
            case 'post':
                $action = 'post';
                $object->loadPostVars();
                foreach ($_FILES as $a => $b) {
                    if ($b['size'] > 0) {
                        $b['name'] = str_replace(' ', '_', $b['name']);
                        $object->{$a} = $b['name'];
                        $status .= dev_upload_file($b, 1, $image_upload_dir);
                    }
                }
                $success .= $object->writeObject();
                $options['back'] = strpos($object->getStatusMessage(), 'Unsuccessful') !== false ? ' <a class="dev_option" href="javascript:history.back(1)">' . $this->getIcon('back') . 'Go back</a>' : '';
            case 'new':
                $options['new'] = '<a href="' . $href . '?action=new">' . $this->getIcon('new') . 'Create New</a>';
                $options['list'] = '<a href="' . $href . '?action=list">' . $this->getIcon('list') . 'Back to List</a>';
                $action = 'post';
                $output .= "<h5>Create New Entry</h5><br />";
                $output .= $edit_form;
                break;
            case 'uploadfiles':
                $options['listfiles'] = '<a href="' . $href . '?action=listfiles&dir=' . $dir . '">' . $this->getIcon('listfiles') . 'Back to List</a>';
                $options['choosefile'] = '<a href="' . $href . '?action=choosefile&dir=' . $dir . '">' . $this->getIcon('choosefile') . 'Upload Another File</a>';
                $output .= dev_upload_file($_FILES['file'], 0, getcwd() . '/' . $dir);
                break;
            case 'removefile':
                $files->loadPostVars();
                //$output .= ($files->deleteObject()) ? "Successfully Deleted Entry<br />" : "Deletion Failed<br />";
                $output .= dev_delete_file($file, true) ? "Successfully Deleted Entry<br />" : "Deletion Failed<br />";
            case 'listfiles':
                //$output .= dev_list_dir('file.php', 'document', $file_upload_dir, $query);
                $options['newfile'] = '<a href="' . $href . '?action=newfile&dir=' . $dir . '">' . $this->getIcon('newfile') . 'Create New File</a>';
                $options['choosefile'] = '<a href="' . $href . '?action=choosefile&dir=' . $dir . '">' . $this->getIcon('choosefile') . 'Upload New File</a>';
                $output .= dev_list_dir('file.php', '', $file_upload_dir, $query);
            case 'choosefile':
                $options['listfiles'] = '<a href="' . $href . '?action=listfiles&dir=' . $dir . '">' . $this->getIcon('listfiles') . 'Back to List</a>';
                $output .= $upload_form;
                break;
            case 'savefile':
                $options['listfiles'] = '<a href="' . $href . '?action=listfiles&dir=' . $dir . '">' . $this->getIcon('listfiles') . 'Back to List</a>';
                $output .= dev_save_file($file, $data);
            case 'openfile':
                $options['listfiles'] = '<a href="' . $href . '?action=listfiles&dir=' . $dir . '">' . $this->getIcon('listfiles') . 'Back to List</a>';
                $options['editfile'] = '<a href="' . $href . '?action=editfile&dir=' . $dir . '&file=' . $file . '">' . $this->getIcon('editfile') . 'Back to List</a>';
                $output .= $view_file_form;
                break;
            case 'newfile':
            case 'editfile':
                $output .= $edit_file_form;
                break;
            case 'upload':
                //Case following special "files" case
                //$object_files->loadPostVars();
                //$files = new DevObject('files');
                foreach ($_FILES as $a => $b) {
                    if ($b['size'] > 0) {
                        $files->clearMembers();
                        $files->loadPostVars();
                        $status .= dev_upload_file($b, 1, $image_upload_dir);
                        $object->writeObject();
                    }
                }
            case 'default':
            case 'view':
                $action = 'edit';
                //$output .= "<h5>View Existing Entry</h5><br />";
                $options['list'] = '<a href="' . $href . '?action=list">' . $this->getIcon('list') . 'Back to List</a>';
                $options['edit'] = '<a href="' . $href . '?action=edit&' . $entry_id_var . '=' . ${$entry_id_var} . '">' . $this->getIcon('edit') . 'Edit</a>';
                $options['delete'] = '<a href="' . $href . '?action=delete&' . $entry_id_var . '=' . ${$entry_id_var} . '">' . $this->getIcon('delete') . 'Delete this entry</a>';
                $options['files'] = '<a href="' . $href . '?action=files&' . $entry_id_var . '=' . ${$entry_id_var} . '">' . $this->getIcon('files') . 'Upload files for this entry</a>';
                $options['manageimages'] = '<a href="' . $href . '?action=manageimages&' . $entry_id_var . '=' . ${$entry_id_var} . '">' . $this->getIcon('manageimages') . 'Manage Images</a>';
                $output .= $view_form;
                break;
            case 'edit':
                $action = 'post';
                $output .= "<h5>Edit Existing Entry</h5><br />";
                $options['list'] = '<a href="' . $href . '?action=list">' . $this->getIcon('list') . 'Back to List</a>';
                $options['delete'] = '<a href="' . $href . '?action=delete&' . $entry_id_var . '=' . ${$entry_id_var} . '">' . $this->getIcon('delete') . 'Delete this entry</a>';
                $options['files'] = '<a href="' . $href . '?action=files&' . $entry_id_var . '=' . ${$entry_id_var} . '">' . $this->getIcon('files') . 'Upload files for this entry</a>';
                $options['manageimages'] = '<a href="' . $href . '?action=manageimages&' . $entry_id_var . '=' . ${$entry_id_var} . '">' . $this->getIcon('manageimages') . 'Manage Images</a>';
                //$output .= $object->formField($entry_id_var, '', '', 'hidden');
                $output .= $edit_form;
                break;
            case 'delete':
                $action = 'remove';
                $options['edit'] = '<a href="' . $href . '?action=edit&' . $entry_id_var . '=' . ${$entry_id_var} . '">' . $this->getIcon('edit') . 'No, return to this entry</a>';
                $output .= "<h5>Delete Existing Entry</h5><br />";
                $output .= $delete_form;
                break;
            case 'files':
                //Special case for minutes and programs
                $options['edit'] = '<a href="' . $href . '?action=edit&' . $entry_id_var . '=' . $_GET[$entry_id_var] . '">' . $this->getIcon('edit') . 'Return to this entry</a>';
                $options['managefiles'] = '<a href="' . $href . '?action=managefiles&' . $entry_id_var . '=' . $_GET[$entry_id_var] . '">' . $this->getIcon('managefiles') . 'Manage existing uploaded files</a>';
                $files = new DevObject($tables);
                $files->loadFreshMembers();
                $action = 'upload';
                $output .= $upload_form;
                break;
            case 'managefiles':
                //$object->setSortOrder('entry_name', 'ASC');
                $files->loadGetVars();
                $files->setSortOrder('files_document', 'ASC');
                $files->setCondition('files_id', '>=', '1');
                $options['edit'] = '<a href="' . $href . '?action=edit&' . $entry_id_var . '=' . ($_GET[$entry_id_var] == '' ? $_POST[$entry_id_var] : $_GET[$entry_id_var]) . '">' . $this->getIcon('edit') . 'Return to this entry</a><br />';
                $output .= '<table width="100%" border="1">';
                $output .= '<tr>
			<td>File Name</td>
			<td>File Type</td>
			<td>Delete</td>
		</tr>' . "\n";
                foreach ($files->createMemberArray() as $a) {
                    $output .= '<tr>
			<td><a href="' . DOMAIN . SITE_ROOT . 'files/' . $a['files_document'] . '" target="_blank">' . $a['files_document'] . '</a></td>
			<td>' . $a['files_type'] . '</td>
			<td><a href="' . $href . '?action=deletefile&files_id=' . $a['files_id'] . '">Remove</a></td>
		</tr>' . "\n";
                }
                $output .= '</table>';
                $output .= dev_list_dir();
                break;
            case 'deletefile':
                $options['managefiles'] = '<a href="' . $href . '?action=managefiles&' . $entry_id_var . '=' . ${$entry_id_var} . '">' . $this->getIcon('managefiles') . 'No, return to this entry\'s files</a>';
                $action = 'removefile';
                $output .= "<h5>Delete Existing Document</h5><br />";
                $output .= $delete_file_form;
                break;
            case 'changeimages':
                $old_image = new DevObject($table);
                $old_image->clearMembers();
                $old_image->{$entry_id_var} = $_POST[$entry_id_var];
                $old_image->loadMembers();
                foreach ($old_image->getMemberArray() as $a => $b) {
                    if ($_POST[$a] == 'NULL') {
                        $old_image->{$a} = '';
                    }
                }
                $success .= $old_image->writeObject(1);
            case 'manageimages':
                //$object->loadFreshMembers();
                $action = 'changeimages';
                $options['new'] = '<a href="' . $href . '?action=new">' . $this->getIcon('new') . 'Create New</a>';
                $options['edit'] = '<a href="' . $href . '?action=edit&' . $entry_id_var . '=' . ${$entry_id_var} . '">' . $this->getIcon('edit') . 'Return to this entry</a>';
                $output .= '<span style="font-size: 11px; color: #ff0000; font-family: arial, helvitica, sans-serif;">
	Select the checkbox to remove the image from this entry.
	</span><br />' . dev_draw_form_field('hidden', $entry_id_var, '', ${$entry_id_var}) . dev_draw_form_field('checkbox', 'entry_image', 'Main Image: ' . $entry_image, '') . dev_draw_form_field('checkbox', 'entry_image_1', 'Additional Image 1: ' . $entry_image_1, 'NULL') . dev_draw_form_field('checkbox', 'entry_image_2', 'Additional Image 2: ' . $entry_image_2, 'NULL') . dev_draw_form_field('checkbox', 'entry_image_3', 'Additional Image 3: ' . $entry_image_3, 'NULL') . dev_draw_form_field('checkbox', 'entry_image_4', 'Additional Image 4: ' . $entry_image_4, 'NULL') . dev_draw_form_field('checkbox', 'entry_image_5', 'Additional Image 5: ' . $entry_image_5, 'NULL') . dev_draw_form_field('checkbox', 'entry_image_6', 'Additional Image 6: ' . $entry_image_6, 'NULL') . dev_draw_form_field('checkbox', 'entry_image_7', 'Additional Image 7: ' . $entry_image_7, 'NULL') . dev_draw_form_field('checkbox', 'entry_image_8', 'Additional Image 8: ' . $entry_image_8, 'NULL') . '<input type="submit" value="Remove" />';
                break;
        }
        $output .= dev_draw_form_field('hidden', 'action', '', $action);
        $output .= dev_close_form();
        $status .= $object->getStatusMessage() != '' ? '<span class="dev_status">' . $object->getStatusMessage() . '</span><br />' : '';
        $option_types = array_keys($options);
        if ($options_on === true) {
            foreach ($option_types as $a) {
                if (!in_array($a, $options_set)) {
                    unset($options[$a]);
                }
            }
        }
        $options_str = implode(' ', $options);
        $this->setStatus($status);
        $this->setTasks($options_str);
        $this->setOutput($output);
        $output = "{$status}{$options_str}<br />{$output}";
        //echo $object->getQuery();
        return $output;
    }