|
|
|
@ -1,6 +1,8 @@ |
|
|
|
|
<?php |
|
|
|
|
/* For licensing terms, see /license.txt */ |
|
|
|
|
|
|
|
|
|
use Chamilo\CourseBundle\Entity\CLink; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Function library for the links tool. |
|
|
|
|
* |
|
|
|
@ -870,7 +872,7 @@ class Link extends Model |
|
|
|
|
$condition_session AND |
|
|
|
|
link.c_id = " . $course_id . " AND |
|
|
|
|
itemproperties.c_id = " . $course_id . " |
|
|
|
|
ORDER BY link.display_order DESC"; |
|
|
|
|
ORDER BY link.display_order ASC"; |
|
|
|
|
$result = Database:: query($sql); |
|
|
|
|
$numberoflinks = Database:: num_rows($result); |
|
|
|
|
if ($numberoflinks > 0) { |
|
|
|
@ -883,14 +885,13 @@ class Link extends Model |
|
|
|
|
$_user['status'] |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
//$css_class = $i % 2 == 0 ? $css_class = 'row_odd' : $css_class = 'row_even'; |
|
|
|
|
$toolbar = ''; |
|
|
|
|
$link_validator = ''; |
|
|
|
|
if (api_is_allowed_to_edit(null, true)) { |
|
|
|
|
$toolbar .= Display::toolbarButton( |
|
|
|
|
'', |
|
|
|
|
'#', |
|
|
|
|
'retweet', |
|
|
|
|
'check-circle-o', |
|
|
|
|
'default btn-sm', |
|
|
|
|
array( |
|
|
|
|
'onclick' => "check_url('" . $myrow['id'] . "', '" . addslashes($myrow['url']) . "');", |
|
|
|
@ -904,9 +905,6 @@ class Link extends Model |
|
|
|
|
'class' => 'check-link' |
|
|
|
|
) |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (api_is_allowed_to_edit(null, true)) { |
|
|
|
|
|
|
|
|
|
if ($session_id == $myrow['session_id']) { |
|
|
|
|
$url = api_get_self() . '?' . api_get_cidreq() . |
|
|
|
@ -924,21 +922,6 @@ class Link extends Model |
|
|
|
|
) |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
// DISPLAY MOVE UP COMMAND only if it is not the top link. |
|
|
|
|
/* commented at least since 2014-10-11 |
|
|
|
|
if ($i != 1) { |
|
|
|
|
echo '<a href="' . api_get_self() . '?' . api_get_cidreq() . '&sec_token='.$token.'&urlview=' . $urlview . '&up=', $myrow[0], '" title="' . get_lang('Up') . '">' . Display :: return_icon('up.png', get_lang('Up'), array (), ICON_SIZE_SMALL) . '', "</a>\n"; |
|
|
|
|
} else { |
|
|
|
|
echo Display :: return_icon('up_na.png', get_lang('Up'), array (), ICON_SIZE_SMALL) . '</a>'; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// DISPLAY MOVE DOWN COMMAND only if it is not the bottom link. |
|
|
|
|
if ($i < $numberoflinks) { |
|
|
|
|
echo '<a href="' . api_get_self() . '?' . api_get_cidreq() . '&sec_token='.$token.'&urlview=' . $urlview . '&down=' . $myrow[0] . '" title="' . get_lang('Down') . '">' . Display :: return_icon('down.png', get_lang('Down'), array (), ICON_SIZE_SMALL) . '', "</a>\n"; |
|
|
|
|
} else { |
|
|
|
|
echo Display :: return_icon('down_na.png', get_lang('Down'), array (), ICON_SIZE_SMALL) . '', "</a>\n"; |
|
|
|
|
}*/ |
|
|
|
|
|
|
|
|
|
if ($myrow['visibility'] == '1') { |
|
|
|
|
$url .= 'link.php?' . api_get_cidreq() . |
|
|
|
|
'&sec_token=' . $token . |
|
|
|
@ -970,6 +953,30 @@ class Link extends Model |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$moveLinkParams = [ |
|
|
|
|
'id' => $myrow['id'], |
|
|
|
|
'scope' => 'category', |
|
|
|
|
'category_id' => $myrow['category_id'], |
|
|
|
|
'action' => 'move_link_up' |
|
|
|
|
]; |
|
|
|
|
$toolbar .= Display::toolbarButton( |
|
|
|
|
get_lang('MoveUp'), |
|
|
|
|
'link.php?' . api_get_cidreq() . '&' . http_build_query($moveLinkParams), |
|
|
|
|
'level-up', |
|
|
|
|
'default', |
|
|
|
|
['class' => 'btn-sm ' . ($i === 1 ? 'disabled' : '')], |
|
|
|
|
false |
|
|
|
|
); |
|
|
|
|
$moveLinkParams['action'] = 'move_link_down'; |
|
|
|
|
$toolbar .= Display::toolbarButton( |
|
|
|
|
get_lang('MoveDown'), |
|
|
|
|
'link.php?' . api_get_cidreq() . '&' . http_build_query($moveLinkParams), |
|
|
|
|
'level-down', |
|
|
|
|
'default', |
|
|
|
|
['class' => 'btn-sm ' . ($i === $numberoflinks ? 'disabled' : '')], |
|
|
|
|
false |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
$url .= api_get_self() . '?' . api_get_cidreq() .'&sec_token=' . $token .'&action=deletelink&id=' . $myrow['id'] .'&category_id=' . $myrow['category_id']; |
|
|
|
|
$event = "javascript: if(!confirm('" . get_lang('LinkDelconfirm') . "'))return false;"; |
|
|
|
|
$title = get_lang('Delete'); |
|
|
|
@ -1037,7 +1044,7 @@ class Link extends Model |
|
|
|
|
array( |
|
|
|
|
'href' => $url, |
|
|
|
|
'target' => '_blank', |
|
|
|
|
'class' => 'invisible' |
|
|
|
|
'class' => 'text-muted' |
|
|
|
|
) |
|
|
|
|
); |
|
|
|
|
$content .= $link_validator; |
|
|
|
@ -1131,7 +1138,6 @@ class Link extends Model |
|
|
|
|
*/ |
|
|
|
|
public static function movecatlink($action, $catlinkid, $courseId = null, $sessionId = null) |
|
|
|
|
{ |
|
|
|
|
$tbl_link = Database:: get_course_table(TABLE_LINK); |
|
|
|
|
$tbl_categories = Database:: get_course_table(TABLE_LINK_CATEGORY); |
|
|
|
|
|
|
|
|
|
if (is_null($courseId)) { |
|
|
|
@ -1142,50 +1148,26 @@ class Link extends Model |
|
|
|
|
$sessionId = api_get_session_id(); |
|
|
|
|
} |
|
|
|
|
$sessionId = intval($sessionId); |
|
|
|
|
$thiscatlinkId = intval($catlinkid); |
|
|
|
|
|
|
|
|
|
if ($action == 'down') { |
|
|
|
|
$thiscatlinkId = intval($catlinkid); |
|
|
|
|
$sortDirection = 'DESC'; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if ($action == 'up') { |
|
|
|
|
$thiscatlinkId = intval($catlinkid); |
|
|
|
|
$sortDirection = 'ASC'; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// We check if it is a category we are moving or a link. |
|
|
|
|
// If it is a category, a querystring catmove = true is present in the url. |
|
|
|
|
$catmove = 'true'; |
|
|
|
|
if ($catmove == 'true') { |
|
|
|
|
$movetable = $tbl_categories; |
|
|
|
|
$catid = $catlinkid; |
|
|
|
|
} else { |
|
|
|
|
$movetable = $tbl_link; |
|
|
|
|
// Getting the category of the link. |
|
|
|
|
if (!empty ($thiscatlinkId)) { |
|
|
|
|
$sql = "SELECT category_id FROM " . $movetable . " |
|
|
|
|
WHERE c_id = $courseId AND id='$thiscatlinkId'"; |
|
|
|
|
$result = Database:: query($sql); |
|
|
|
|
$catid = Database:: fetch_array($result); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// This code is copied and modified from announcements.php. |
|
|
|
|
$movetable = $tbl_categories; |
|
|
|
|
|
|
|
|
|
if (!empty($sortDirection)) { |
|
|
|
|
if (!in_array(trim(strtoupper($sortDirection)), array('ASC', 'DESC'))) { |
|
|
|
|
$sortDirection = 'ASC'; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if ($catmove == 'true') { |
|
|
|
|
$sql = "SELECT id, display_order FROM $movetable |
|
|
|
|
WHERE c_id = $courseId |
|
|
|
|
ORDER BY display_order $sortDirection"; |
|
|
|
|
} else { |
|
|
|
|
$sql = "SELECT id, display_order FROM $movetable |
|
|
|
|
WHERE c_id = $courseId AND category_id='" . $catid[0] . "' |
|
|
|
|
ORDER BY display_order $sortDirection"; |
|
|
|
|
} |
|
|
|
|
$sql = "SELECT id, display_order FROM $movetable |
|
|
|
|
WHERE c_id = $courseId |
|
|
|
|
ORDER BY display_order $sortDirection"; |
|
|
|
|
$linkresult = Database:: query($sql); |
|
|
|
|
$thislinkOrder = 1; |
|
|
|
|
while ($sortrow = Database:: fetch_array($linkresult)) { |
|
|
|
@ -1784,4 +1766,76 @@ class Link extends Model |
|
|
|
|
|
|
|
|
|
return $category; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Move a the display_order from a link in its category |
|
|
|
|
* @param int $id The link ID |
|
|
|
|
* @param string $direction The direction to sort the links |
|
|
|
|
* @return bool |
|
|
|
|
*/ |
|
|
|
|
private static function moveLinkDisplayOrder($id, $direction) |
|
|
|
|
{ |
|
|
|
|
$em = Database::getManager(); |
|
|
|
|
/** @var CLink $link */ |
|
|
|
|
$link = $em->find('ChamiloCourseBundle:CLink', $id); |
|
|
|
|
|
|
|
|
|
if (!$link) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$compareLinks = $em |
|
|
|
|
->getRepository('ChamiloCourseBundle:CLink') |
|
|
|
|
->findBy( |
|
|
|
|
['cId' => $link->getCId(), 'categoryId' => $link->getCategoryId()], |
|
|
|
|
['displayOrder' => $direction] |
|
|
|
|
); |
|
|
|
|
/** @var CLink $prevLink */ |
|
|
|
|
$prevLink = null; |
|
|
|
|
|
|
|
|
|
/** @var CLink $compareLink */ |
|
|
|
|
foreach ($compareLinks as $compareLink) { |
|
|
|
|
if ($compareLink->getId() !== $link->getId()) { |
|
|
|
|
$prevLink = $compareLink; |
|
|
|
|
|
|
|
|
|
continue; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (!$prevLink) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$newPrevLinkDisplayOrder = $link->getDisplayOrder(); |
|
|
|
|
$newLinkDisplayOrder = $prevLink->getDisplayOrder(); |
|
|
|
|
|
|
|
|
|
$link->setDisplayOrder($newLinkDisplayOrder); |
|
|
|
|
$prevLink->setDisplayOrder($newPrevLinkDisplayOrder); |
|
|
|
|
|
|
|
|
|
$em->merge($prevLink); |
|
|
|
|
$em->merge($link); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$em->flush(); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Move to up a the display_order from a link in its category |
|
|
|
|
* @param int $id |
|
|
|
|
* @return bool |
|
|
|
|
*/ |
|
|
|
|
public static function moveLinkUp($id) |
|
|
|
|
{ |
|
|
|
|
return self::moveLinkDisplayOrder($id, 'ASC'); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Move to down a the display_order from a link in its category |
|
|
|
|
* @param int $id |
|
|
|
|
* @return bool |
|
|
|
|
*/ |
|
|
|
|
public static function moveLinkDown($id) |
|
|
|
|
{ |
|
|
|
|
return self::moveLinkDisplayOrder($id, 'DESC'); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|