Beispiel #1
0
        foreach ($f_items as $item_id) {
            $InterviewItem = new InterviewItem(null, $item_id);
            $InterviewItem->positionAbsolute($f_new_pos);
        }

    break;

    case 'interview_move_up_rel':
    case 'interview_move_down_rel':
        $f_interviews = Input::Get('f_interviews', 'array');
        list(,,$dir,) = explode('_', $f_action);

        foreach ($f_interviews as $interview_id) {
            $Interview = new Interview($interview_id);
            $Interview->positionRelative($dir);
        }

    break;

    case 'interview_move_abs':
        $f_interviews = Input::Get('f_interviews', 'array');
        $f_new_pos = Input::Get('f_new_pos', 'int');

        foreach ($f_interviews as $interview_id) {
            $Interview = new Interview($interview_id);
            $Interview->positionAbsolute($f_new_pos);
        }

    break;
}
Beispiel #2
0
    /**
     * Move the interview to the given position (i.e. reorder the interview).
     * @param int $p_moveToPosition
     * @return boolean
     */
    function positionAbsolute($p_moveToPosition = 1)
    {
        global $g_ado_db;
        // Get the item that is in the location we are moving
        // this one to.
        $queryStr = "   SELECT  position, interview_id
                        FROM    {$this->m_dbTableName}
                        ORDER BY position ASC
                        LIMIT   ".($p_moveToPosition - 1).', 1';
        $destRow = $g_ado_db->GetRow($queryStr);
        if (!$destRow) {
            return false;
        }
        if ($destRow['position'] == $this->m_data['position']) {
            // Move the destination down one.
            $destItem = new Interview($destRow['interview_id']);
            $destItem->positionRelative("down", 1);
            return true;
        }
        if ($destRow['position'] > $this->m_data['position']) {
            $operator = '-';
        } else {
            $operator = '+';
        }
        // Reorder all the other items
        $minItemOrder = min($destRow['position'], $this->m_data['position']);
        $maxItemOrder = max($destRow['position'], $this->m_data['position']);
        $queryStr = "   UPDATE  {$this->m_dbTableName}
                        SET     position = position $operator 1
                        WHERE   position >= $minItemOrder
                                AND position <= $maxItemOrder";
        $g_ado_db->Execute($queryStr);

        // Reposition this item.
        $queryStr = "   UPDATE  {$this->m_dbTableName}
                        SET     position = {$destRow['position']}
                        WHERE   interview_id = {$this->m_data['interview_id']}";
        $g_ado_db->Execute($queryStr);

        $CampCache = CampCache::singleton();
        $CampCache->clear('user');
        $this->fetch();
        return true;
    } // fn positionAbsolute