Beispiel #1
0
function editItem($uid, $gid, &$access, $sectionid = 0, $task, $Itemid)
{
    global $database, $my, $mainframe;
    global $mosConfig_absolute_path, $mosConfig_live_site, $mosConfig_offset;
    $nullDate = $database->getNullDate();
    $row = new mosContent($database);
    // load the row from the db table
    $row->load((int) $uid);
    // fail if checked out not by 'me'
    if ($row->isCheckedOut($my->id)) {
        mosErrorAlert("The module [ " . $row->title . " ] is currently being edited by another person.");
    }
    if ($uid) {
        // existing record
        if (!($access->canEdit || $access->canEditOwn && $row->created_by == $my->id)) {
            mosNotAuth();
            return;
        }
    } else {
        // new record
        if (!($access->canEdit || $access->canEditOwn)) {
            mosNotAuth();
            return;
        }
        if ($Itemid == 0 || $Itemid == 99999999) {
            // security check to see if link exists in a menu
            $link = 'index.php?option=com_content&task=new&sectionid=' . (int) $sectionid;
            $query = "SELECT id" . "\n FROM #__menu" . "\n WHERE (link LIKE '%{$link}' OR link LIKE '%{$link}&%')" . "\n AND published = 1";
            $database->setQuery($query);
            $exists = $database->loadResult();
            if (!$exists) {
                mosNotAuth();
                return;
            }
        }
    }
    if ($uid) {
        $sectionid = $row->sectionid;
    }
    $lists = array();
    // get the type name - which is a special category
    $query = "SELECT name FROM #__sections" . "\n WHERE id = " . (int) $sectionid;
    $database->setQuery($query);
    $section = $database->loadResult();
    if ($uid == 0) {
        $row->catid = 0;
    }
    if ($uid) {
        $row->checkout($my->id);
        if (trim($row->images)) {
            $row->images = explode("\n", $row->images);
        } else {
            $row->images = array();
        }
        $row->created = mosFormatDate($row->created, _CURRENT_SERVER_TIME_FORMAT);
        $row->modified = $row->modified == $nullDate ? '' : mosFormatDate($row->modified, _CURRENT_SERVER_TIME_FORMAT);
        $row->publish_up = mosFormatDate($row->publish_up, _CURRENT_SERVER_TIME_FORMAT);
        if (trim($row->publish_down) == $nullDate || trim($row->publish_down) == '' || trim($row->publish_down) == '-') {
            $row->publish_down = 'Never';
        }
        $row->publish_down = mosFormatDate($row->publish_down, _CURRENT_SERVER_TIME_FORMAT);
        $query = "SELECT name" . "\n FROM #__users" . "\n WHERE id = " . (int) $row->created_by;
        $database->setQuery($query);
        $row->creator = $database->loadResult();
        // test to reduce unneeded query
        if ($row->created_by == $row->modified_by) {
            $row->modifier = $row->creator;
        } else {
            $query = "SELECT name" . "\n FROM #__users" . "\n WHERE id = " . (int) $row->modified_by;
            $database->setQuery($query);
            $row->modifier = $database->loadResult();
        }
        $query = "SELECT content_id" . "\n FROM #__content_frontpage" . "\n WHERE content_id = " . (int) $row->id;
        $database->setQuery($query);
        $row->frontpage = $database->loadResult();
    } else {
        $row->sectionid = $sectionid;
        $row->version = 0;
        $row->state = 0;
        $row->ordering = 0;
        $row->images = array();
        $row->publish_up = date('Y-m-d H:i:s', time() + $mosConfig_offset * 60 * 60);
        $row->publish_down = 'Never';
        $row->creator = 0;
        $row->modifier = 0;
        $row->frontpage = 0;
    }
    // pull param column from category info
    $query = "SELECT params" . "\n FROM #__categories" . "\n WHERE id = " . (int) $row->catid;
    $database->setQuery($query);
    $categoryParam = $database->loadResult();
    $paramsCat = new mosParameters($categoryParam, $mainframe->getPath('com_xml', 'com_categories'), 'component');
    $selected_folders = $paramsCat->get('imagefolders', '');
    if (!$selected_folders) {
        $selected_folders = '*2*';
    }
    // check if images utilizes settings from section
    if (strpos($selected_folders, '*2*') !== false) {
        unset($selected_folders);
        // load param column from section info
        $query = "SELECT params" . "\n FROM #__sections" . "\n WHERE id = " . (int) $row->sectionid;
        $database->setQuery($query);
        $sectionParam = $database->loadResult();
        $paramsSec = new mosParameters($sectionParam, $mainframe->getPath('com_xml', 'com_sections'), 'component');
        $selected_folders = $paramsSec->get('imagefolders', '');
    }
    if (trim($selected_folders)) {
        $temps = explode(',', $selected_folders);
        foreach ($temps as $temp) {
            $folders[] = mosHTML::makeOption($temp, $temp);
        }
    } else {
        $folders[] = mosHTML::makeOption('*1*');
    }
    // calls function to read image from directory
    $pathA = $mosConfig_absolute_path . '/images/stories';
    $pathL = $mosConfig_live_site . '/images/stories';
    $images = array();
    if ($folders[0]->value == '*1*') {
        $folders = array();
        $folders[] = mosHTML::makeOption('/');
        mosAdminMenus::ReadImages($pathA, '/', $folders, $images);
    } else {
        mosAdminMenus::ReadImagesX($folders, $images);
    }
    // list of folders in images/stories/
    $lists['folders'] = mosAdminMenus::GetImageFolders($folders, $pathL);
    // list of images in specfic folder in images/stories/
    $lists['imagefiles'] = mosAdminMenus::GetImages($images, $pathL, $folders);
    // list of saved images
    $lists['imagelist'] = mosAdminMenus::GetSavedImages($row, $pathL);
    // make the select list for the states
    $states[] = mosHTML::makeOption(0, _CMN_UNPUBLISHED);
    $states[] = mosHTML::makeOption(1, _CMN_PUBLISHED);
    $lists['state'] = mosHTML::selectList($states, 'state', 'class="inputbox" size="1"', 'value', 'text', intval($row->state));
    // build the html select list for ordering
    $query = "SELECT ordering AS value, title AS text" . "\n FROM #__content" . "\n WHERE catid = " . (int) $row->catid . "\n ORDER BY ordering";
    $lists['ordering'] = mosAdminMenus::SpecificOrdering($row, $uid, $query, 1);
    // build list of categories
    $lists['catid'] = mosAdminMenus::ComponentCategory('catid', $sectionid, intval($row->catid));
    // build the select list for the image positions
    $lists['_align'] = mosAdminMenus::Positions('_align');
    // build the html select list for the group access
    $lists['access'] = mosAdminMenus::Access($row);
    // build the select list for the image caption alignment
    $lists['_caption_align'] = mosAdminMenus::Positions('_caption_align');
    // build the html select list for the group access
    // build the select list for the image caption position
    $pos[] = mosHTML::makeOption('bottom', _CMN_BOTTOM);
    $pos[] = mosHTML::makeOption('top', _CMN_TOP);
    $lists['_caption_position'] = mosHTML::selectList($pos, '_caption_position', 'class="inputbox" size="1"', 'value', 'text');
    HTML_content::editContent($row, $section, $lists, $images, $access, $my->id, $sectionid, $task, $Itemid);
}
/**
* Compiles information to add or edit the record
* @param database A database connector object
* @param integer The unique id of the record to edit (0 if new)
* @param integer The id of the content section
*/
function editContent($uid = 0, $sectionid = 0, $option)
{
    global $database, $my, $mainframe;
    global $mosConfig_absolute_path, $mosConfig_live_site, $mosConfig_offset;
    $redirect = strval(mosGetParam($_POST, 'redirect', ''));
    $nullDate = $database->getNullDate();
    if (!$redirect) {
        $redirect = $sectionid;
    }
    // load the row from the db table
    $row = new mosContent($database);
    $row->load((int) $uid);
    if ($uid) {
        $sectionid = $row->sectionid;
        if ($row->state < 0) {
            mosRedirect('index2.php?option=com_content&sectionid=' . $row->sectionid, 'You cannot edit an archived item');
        }
    }
    // fail if checked out not by 'me'
    if ($row->checked_out && $row->checked_out != $my->id) {
        mosRedirect('index2.php?option=com_content', 'The module ' . $row->title . ' is currently being edited by another administrator');
    }
    $selected_folders = NULL;
    if ($uid) {
        $row->checkout($my->id);
        if (trim($row->images)) {
            $row->images = explode("\n", $row->images);
        } else {
            $row->images = array();
        }
        $row->created = mosFormatDate($row->created, _CURRENT_SERVER_TIME_FORMAT);
        $row->modified = $row->modified == $nullDate ? '' : mosFormatDate($row->modified, _CURRENT_SERVER_TIME_FORMAT);
        $row->publish_up = mosFormatDate($row->publish_up, _CURRENT_SERVER_TIME_FORMAT);
        if (trim($row->publish_down) == $nullDate || trim($row->publish_down) == '' || trim($row->publish_down) == '-') {
            $row->publish_down = 'Never';
        }
        $row->publish_down = mosFormatDate($row->publish_down, _CURRENT_SERVER_TIME_FORMAT);
        $query = "SELECT name" . "\n FROM #__users" . "\n WHERE id = " . (int) $row->created_by;
        $database->setQuery($query);
        $row->creator = $database->loadResult();
        // test to reduce unneeded query
        if ($row->created_by == $row->modified_by) {
            $row->modifier = $row->creator;
        } else {
            $query = "SELECT name" . "\n FROM #__users" . "\n WHERE id = " . (int) $row->modified_by;
            $database->setQuery($query);
            $row->modifier = $database->loadResult();
        }
        $query = "SELECT content_id" . "\n FROM #__content_frontpage" . "\n WHERE content_id = " . (int) $row->id;
        $database->setQuery($query);
        $row->frontpage = $database->loadResult();
        // get list of links to this item
        $and = "\n AND componentid = " . (int) $row->id;
        $menus = mosAdminMenus::Links2Menu('content_item_link', $and);
    } else {
        if (!$sectionid && @$_POST['filter_sectionid']) {
            $sectionid = $_POST['filter_sectionid'];
        }
        if (@$_POST['catid']) {
            $row->catid = (int) $_POST['catid'];
            $category = new mosCategory($database);
            $category->load((int) $_POST['catid']);
            $sectionid = $category->section;
        } else {
            $row->catid = 0;
        }
        $row->sectionid = $sectionid;
        $row->version = 0;
        $row->state = 1;
        $row->ordering = 0;
        $row->images = array();
        $row->publish_up = date('Y-m-d H:i:s', time() + $mosConfig_offset * 60 * 60);
        $row->publish_down = 'Never';
        $row->creator = '';
        $row->modified = $nullDate;
        $row->modifier = '';
        $row->frontpage = 0;
        $menus = array();
    }
    $javascript = "onchange=\"changeDynaList( 'catid', sectioncategories, document.adminForm.sectionid.options[document.adminForm.sectionid.selectedIndex].value, 0, 0);\"";
    $query = "SELECT s.id, s.title" . "\n FROM #__sections AS s" . "\n ORDER BY s.ordering";
    $database->setQuery($query);
    if ($sectionid == 0) {
        $sections[] = mosHTML::makeOption('-1', 'Select Section', 'id', 'title');
        $sections = array_merge($sections, $database->loadObjectList());
        $lists['sectionid'] = mosHTML::selectList($sections, 'sectionid', 'class="inputbox" size="1" ' . $javascript, 'id', 'title');
    } else {
        $sections = $database->loadObjectList();
        $lists['sectionid'] = mosHTML::selectList($sections, 'sectionid', 'class="inputbox" size="1" ' . $javascript, 'id', 'title', intval($row->sectionid));
    }
    $contentSection = '';
    foreach ($sections as $section) {
        $section_list[] = $section->id;
        // get the type name - which is a special category
        if ($row->sectionid) {
            if ($section->id == $row->sectionid) {
                $contentSection = $section->title;
            }
        } else {
            if ($section->id == $sectionid) {
                $contentSection = $section->title;
            }
        }
    }
    $sectioncategories = array();
    $sectioncategories[-1] = array();
    $sectioncategories[-1][] = mosHTML::makeOption('-1', 'Select Category', 'id', 'name');
    mosArrayToInts($section_list);
    $section_list = 'section=' . implode(' OR section=', $section_list);
    $query = "SELECT id, name, section" . "\n FROM #__categories" . "\n WHERE ( {$section_list} )" . "\n ORDER BY ordering";
    $database->setQuery($query);
    $cat_list = $database->loadObjectList();
    foreach ($sections as $section) {
        $sectioncategories[$section->id] = array();
        $rows2 = array();
        foreach ($cat_list as $cat) {
            if ($cat->section == $section->id) {
                $rows2[] = $cat;
            }
        }
        foreach ($rows2 as $row2) {
            $sectioncategories[$section->id][] = mosHTML::makeOption($row2->id, $row2->name, 'id', 'name');
        }
    }
    // get list of categories
    if (!$row->catid && !$row->sectionid) {
        $categories[] = mosHTML::makeOption('-1', 'Select Category', 'id', 'name');
        $lists['catid'] = mosHTML::selectList($categories, 'catid', 'class="inputbox" size="1"', 'id', 'name');
    } else {
        $categoriesA = array();
        if ($sectionid == 0) {
            //$where = "\n WHERE section NOT LIKE '%com_%'";
            foreach ($cat_list as $cat) {
                $categoriesA[] = $cat;
            }
        } else {
            //$where = "\n WHERE section = '$sectionid'";
            foreach ($cat_list as $cat) {
                if ($cat->section == $sectionid) {
                    $categoriesA[] = $cat;
                }
            }
        }
        $categories[] = mosHTML::makeOption('-1', 'Select Category', 'id', 'name');
        $categories = array_merge($categories, $categoriesA);
        $lists['catid'] = mosHTML::selectList($categories, 'catid', 'class="inputbox" size="1"', 'id', 'name', intval($row->catid));
    }
    // build the html select list for ordering
    $query = "SELECT ordering AS value, title AS text" . "\n FROM #__content" . "\n WHERE catid = " . (int) $row->catid . "\n AND state >= 0" . "\n ORDER BY ordering";
    $lists['ordering'] = mosAdminMenus::SpecificOrdering($row, $uid, $query, 1);
    // pull param column from category info
    $query = "SELECT params" . "\n FROM #__categories" . "\n WHERE id = " . (int) $row->catid;
    $database->setQuery($query);
    $categoryParam = $database->loadResult();
    $paramsCat = new mosParameters($categoryParam, $mainframe->getPath('com_xml', 'com_categories'), 'component');
    $selected_folders = $paramsCat->get('imagefolders', '');
    if (!$selected_folders) {
        $selected_folders = '*2*';
    }
    // check if images utilizes settings from section
    if (strpos($selected_folders, '*2*') !== false) {
        unset($selected_folders);
        // load param column from section info
        $query = "SELECT params" . "\n FROM #__sections" . "\n WHERE id = " . (int) $row->sectionid;
        $database->setQuery($query);
        $sectionParam = $database->loadResult();
        $paramsSec = new mosParameters($sectionParam, $mainframe->getPath('com_xml', 'com_sections'), 'component');
        $selected_folders = $paramsSec->get('imagefolders', '');
    }
    if (trim($selected_folders)) {
        $temps = explode(',', $selected_folders);
        foreach ($temps as $temp) {
            $temp = ampReplace($temp);
            $folders[] = mosHTML::makeOption($temp, $temp);
        }
    } else {
        $folders[] = mosHTML::makeOption('*1*');
    }
    // calls function to read image from directory
    $pathA = $mosConfig_absolute_path . '/images/stories';
    $pathL = $mosConfig_live_site . '/images/stories';
    $images = array();
    if ($folders[0]->value == '*1*') {
        $folders = array();
        $folders[] = mosHTML::makeOption('/');
        mosAdminMenus::ReadImages($pathA, '/', $folders, $images);
    } else {
        mosAdminMenus::ReadImagesX($folders, $images);
    }
    // list of folders in images/stories/
    $lists['folders'] = mosAdminMenus::GetImageFolders($folders, $pathL);
    // list of images in specfic folder in images/stories/
    $lists['imagefiles'] = mosAdminMenus::GetImages($images, $pathL, $folders);
    // list of saved images
    $lists['imagelist'] = mosAdminMenus::GetSavedImages($row, $pathL);
    // build list of users
    $active = intval($row->created_by) ? intval($row->created_by) : $my->id;
    $lists['created_by'] = mosAdminMenus::UserSelect('created_by', $active);
    // build the select list for the image position alignment
    $lists['_align'] = mosAdminMenus::Positions('_align');
    // build the select list for the image caption alignment
    $lists['_caption_align'] = mosAdminMenus::Positions('_caption_align');
    // build the html select list for the group access
    $lists['access'] = mosAdminMenus::Access($row);
    // build the html select list for menu selection
    $lists['menuselect'] = mosAdminMenus::MenuSelect();
    // build the select list for the image caption position
    $pos[] = mosHTML::makeOption('bottom', _CMN_BOTTOM);
    $pos[] = mosHTML::makeOption('top', _CMN_TOP);
    $lists['_caption_position'] = mosHTML::selectList($pos, '_caption_position', 'class="inputbox" size="1"', 'value', 'text');
    // get params definitions
    $params = new mosParameters($row->attribs, $mainframe->getPath('com_xml', 'com_content'), 'component');
    HTML_content::editContent($row, $contentSection, $lists, $sectioncategories, $images, $params, $option, $redirect, $menus);
}