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§ionid=' . (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§ionid=' . $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); }