ArticleType::rename PHP Method

rename() public method

Rename the article type. This will move the entire table in the database and update ArticleTypeMetadata. Usually, one wants to just rename the Display Name, which is done via SetDisplayName
public rename ( $p_newName )
$p_newName
    public function rename($p_newName)
    {
        global $g_ado_db;
        if (!ArticleType::isValidFieldName($p_newName)) {
            return false;
        }
        $metadata = new ArticleTypeField($p_newName, 'NULL');
        if ($metadata->exists()) {
            return false;
        }
        $oldName = $this->m_name;
        $oldNameEsc = $g_ado_db->escape($this->m_name);
        $newNameEsc = $g_ado_db->escape($p_newName);
        $queryStr = "RENAME TABLE `" . $this->m_dbTableName . "` TO `X{$p_newName}`";
        $success = $g_ado_db->Execute($queryStr);
        if ($success) {
            $queryStr = "UPDATE ArticleTypeMetadata SET type_name = {$newNameEsc} " . "WHERE type_name = {$oldNameEsc}";
            $success = $g_ado_db->Execute($queryStr);
        }
        if ($success) {
            $queryStr = "UPDATE Articles SET Type = {$newNameEsc} WHERE Type = {$oldNameEsc}";
            $success = $g_ado_db->Execute($queryStr);
        }
        if ($success) {
            $this->m_name = $p_newName;
            $this->m_dbTableName = 'X' . $p_newName;
        } else {
            $queryStr = "RENAME TABLE `X{$p_newName}` TO `" . $this->m_dbTableName . "`";
            $g_ado_db->Execute($queryStr);
            $queryStr = "UPDATE ArticleTypeMetadata SET type_name = '{$oldName}' " . "WHERE type_name = {$newNameEsc}";
            $g_ado_db->Execute($queryStr);
            $queryStr = "UPDATE Articles SET Type = '{$oldName}' WHERE Type = {$newNameEsc}";
            $g_ado_db->Execute($queryStr);
        }
        return $success;
    }

Usage Example

Example #1
0
    	if (!$old_articleType->exists()) {
		    $correct = false;
		    $errorMsgs[] = getGS('The article type $1 does not exist.', '<B>'.htmlspecialchars($f_oldName).'</B>');
		}
    }

	if ($correct) {
		$articleType = new ArticleType($f_name);
		if ($articleType->exists()) {
			$correct = false;
			$errorMsgs[] = getGS('The article type $1 already exists.', '<B>'. htmlspecialchars($f_name). '</B>');
		}
	}

    if ($correct) {
    	$old_articleType->rename($f_name);
    	camp_html_goto_page("/$ADMIN/article_types/");
	}
}

$crumbs = array();
$crumbs[] = array(getGS("Configure"), "");
$crumbs[] = array(getGS("Article Types"), "/$ADMIN/article_types/");
$crumbs[] = array(getGS("Rename article type '$1'", $f_oldName), "");

echo camp_html_breadcrumbs($crumbs);

?>
<P>
<TABLE BORDER="0" CELLSPACING="0" CELLPADDING="8" class="message_box">
<TR>