Example #1
0
    /**
     * Move the article to the given position (i.e. reorder the article).
     * @param int $p_moveToPosition
     * @return boolean
     */
    public function positionAbsolute($p_moveToPosition = 1)
    {
        global $g_ado_db;

        CampCache::singleton()->clear('user');
        $this->fetch();

        $g_ado_db->Execute('LOCK TABLES Articles WRITE');

        // Get the article that is in the location we are moving
        // this one to.
        $queryStr = 'SELECT Number, IdLanguage, ArticleOrder FROM Articles '
                    .' WHERE IdPublication='.$this->m_data['IdPublication']
                    .' AND NrIssue='.$this->m_data['NrIssue']
                    .' AND NrSection='.$this->m_data['NrSection']
                     .' ORDER BY ArticleOrder ASC LIMIT '.($p_moveToPosition - 1).', 1';
        $destRow = $g_ado_db->GetRow($queryStr);
        if (!$destRow) {
            $g_ado_db->Execute('UNLOCK TABLES');
            return false;
        }
        if ($destRow['ArticleOrder'] == $this->m_data['ArticleOrder']) {
            $g_ado_db->Execute('UNLOCK TABLES');

            // Move the destination down one.
            $destArticle = new Article($destRow['IdLanguage'], $destRow['Number']);
            $destArticle->positionRelative("down", 1);
            return true;
        }
        if ($destRow['ArticleOrder'] > $this->m_data['ArticleOrder']) {
            $operator = '-';
        } else {
            $operator = '+';
        }
        // Reorder all the other articles in this section
        $minArticleOrder = min($destRow['ArticleOrder'], $this->m_data['ArticleOrder']);
        $maxArticleOrder = max($destRow['ArticleOrder'], $this->m_data['ArticleOrder']);
        $queryStr = 'UPDATE Articles '
                    .' SET ArticleOrder = ArticleOrder '.$operator.' 1 '
                    .' WHERE IdPublication='.$this->m_data['IdPublication']
                    .' AND NrIssue='.$this->m_data['NrIssue']
                    .' AND NrSection='.$this->m_data['NrSection']
                     .' AND ArticleOrder >= '.$minArticleOrder
                     .' AND ArticleOrder <= '.$maxArticleOrder;
        $g_ado_db->Execute($queryStr);

        // Reposition this article.
        $queryStr = 'UPDATE Articles '
                    .' SET ArticleOrder='.$destRow['ArticleOrder']
                    .' WHERE IdPublication='.$this->m_data['IdPublication']
                    .' AND NrIssue='.$this->m_data['NrIssue']
                    .' AND NrSection='.$this->m_data['NrSection']
                     .' AND Number='.$this->m_data['Number'];
        $g_ado_db->Execute($queryStr);

        $g_ado_db->Execute('UNLOCK TABLES');

        CampCache::singleton()->clear('user');
        $this->m_cacheUpdate = true;

        $this->fetch();

        return true;
    } // fn positionAbsolute
Example #2
0
$sectionObj = new Section($f_publication_id, $f_issue_number, $f_language_id, $f_section_number);
if (!$sectionObj->exists()) {
	camp_html_display_error(getGS('Section does not exist.'));
	exit;
}

$articleObj = new Article($f_article_language, $f_article_number);
if (!$articleObj->exists()) {
	camp_html_display_error(getGS('Article does not exist.'));
	exit;
}

switch ($f_move) {
case 'up_rel':
	$articleObj->positionRelative('up', 1);
	break;
case 'down_rel':
	$articleObj->positionRelative('down', 1);
	break;
case 'abs':
	$articleObj->positionAbsolute($f_position);
	break;
default: ;
}

$url = "/$ADMIN/articles/index.php"
		."?f_publication_id=".$articleObj->getPublicationId()
		."&f_issue_number=".$articleObj->getIssueNumber()
		."&f_section_number=".$articleObj->getSectionNumber()
		."&f_article_number=".$articleObj->getArticleNumber()