윈도우즈용 Scrivener 3.0 베타 44 출시 문서

이 문서는 공식 번역이 아니라는 사실을 밝혀둡니다. 다소 오류가 있을 수도 있으니 감안하시고 확인하시기 바랍니다. 윈도우즈용 Scrivener 3.0 베타 43 출시 문서 에서 바뀐 것은 버그 수정 부분이네요.

윈도우즈용 Scrivener 3.0 베타 43 출시 문서

이 문서는 공식 번역이 아니라는 사실을 밝혀둡니다. 다소 오류가 있을 수도 있으니 감안하시고 확인하시기 바랍니다. 윈도우즈용 Scrivener 3.0 베타 42 출시 문서 에서 바뀐 것은 버그 수정 부분이네요.

이용자 역할 자동으로 바꾸기

이용자 역할을 등록된 이메일 기준으로 변경하는 코드이다. PHP로 작성되었고, crontab에 등록해서 5분마다 실행하도록 설정하고 로그를 남기는 방식으로 작동된다.

이용자 역할

최근 워드프레스로 작업하고 있는 사이트가 특정 학생을 대상으로 서비스되고 있다. 워드프레스의 로그인 정보를 인식하고, 등록된 이용자가 특정 역할을 가지고 있어야 페이지의 내용이 표시되게 하는 방식으로 처리하고 있다.

이용자 역할 편집기로 ‘학생’ 역할을 만들고, 학생 역할에 특정 기능을 이용가능하게 해 놨다. 특정 기능을 이용할 수 있게 되어 있는 역할이라면 이용할 수 있게 해 놨다는게 더 정확하겠다. 학생이 학습 페이지의 내용을 보려면 워드프레스 계정에 등록한 뒤 ‘학생’ 역할을 부여 받아야 한다.

처음에는 이런 기능을 제공해주는 플러그인이 없나 찾아보다가 없어서 일일히 수작업으로 진행하였다. 차피 사이트의 존재를 알고 있는 학생이 제한되어 있고, 우리나라에서 이용될 수 없는 이메일 주소를 가지고 있지 않는 이용자만 걸러내면 되니까 크게 문제될 것이 없었다.

그런데 이 사이트를 이용하는 학교가 늘어나면서 이용자 역할을 조정해 주어야 할 대상이 늘어나게 되었다. 그래서 다시 플러그인을 찾아봤지만 찾을 수가 없어서 만들게 됐다.

역할 자동 전환 코드

급조한 티가 팍팍나는 조잡한 코드지만 이용하는데는 문제 없다.

<?php
$hdr = "wp"; // 일반적으로 wp_something 형식으로 되어 있는데, 아래막대 앞쪽의 wp만 입력하면 된다. 다르면 변경해주어야 한다.
$dbn = "wordpress"; // 일반적으로 wordpress로 되어 있지만 다르면 변경해주어야 한다.
$em = array("처리할 이메일 주소1","처리할 이메일 주소2"); // 처리할 이메일 목록을 따옴표에 담아 콤마로 구분해 입력하면 된다.
$link = mysqli_connect('localhost', 'ID', 'password'); // 데이터 베이스 접속 정보이다.
if (!$link) { die('연결에 실패했습니다: ' . mysqli_error());}
mysqli_select_db($link, $dbn); // 접속 정보로 자료집 선택하기

for($i = 0; $i < sizeof($em); $i++) {
$q = "SELECT * FROM ".$hdr."_users WHERE user_email LIKE '".$em[$i]."' ORDER BY ID ASC"; $qr = mysqli_query($link, $q);
if($qr!=false) {
$r = mysqli_fetch_array($qr);
$uid = $r[0];
$q = "SELECT meta_value FROM ".$hdr."_usermeta WHERE user_id = ".$uid." AND meta_key = '".$hdr."_capabilities'";
$qr = mysqli_query($link, $q);
if($qr!=false) {
$r = mysqli_fetch_array($qr);
if($r[0] == "a:1:{s:10:\"subscriber\";b:1;}") { // 역할이 ‘구독자’인지 확인해서 맞으면 실행
echo(date("Y-m-d H:i:s", time())."[ ".$em[$i]." ] 처리됨 "."\n");
$q = "UPDATE ".$hdr."_usermeta SET meta_value = 'a:1:{s:7:\"student\";b:1;}' WHERE ".$hdr."_usermeta.user_id = ".$uid." and ".$hdr."_usermeta.meta_key = '".$hdr."_capabilities';"; // 역할을 학생으로 변경
}
}
}
}

?>

오류나면 shortcode가 허용되었는지 확인하고 수정해주면 된다.

사이트에 가입하면 구독자 역할이 배정되도록 되어있기에, 이메일이 구독자로 등록되어 있다면 학생 역할로 변경하라는 것이다. 학생 역할은 이용자 역할 편집기로 추가해 준 역할이고, 기본 등록 역할이다.

자동 실행 설정

자동 실행은 crontab에 등록하면 되는데, 이메일 목록에 있는 학생이 가입하면 5분 이내에 처리될 수 있도록 5분 간격으로 처리되도록 해 놨다.

명령행에서 crontab -e 를 입력하여 편집기에 들어가서 다음의 내용을 추가해주면 된다.

*/5 * * * * /usr/bin/php /경로/파일명.php >> /var/log/파일명.log

분 단위 자리에 ‘ /5 ’를 붙여서 추가해주면 5분 단위로 처리되고, 기록파일에는 다음과 같이 남는다.

2020-03-17 08:15:01[ 이메일 주소1 ] 처리됨
2020-03-17 08:20:01[ 이메일 주소2 ] 처리됨
:

너무 짧다 싶으면 원하는 간격으로 조정하여 이용하면 된다. 다른 간격으로 변경하고 싶으면 크론탭 구루 사이트를 이용하여 값을 얻어 앞의 별표 부분에 넣어주면 된다.

윈도우즈용 Scrivener 3.0 베타 42 출시 문서

이 문서는 공식 번역이 아니라는 사실을 밝혀둡니다. 다소 오류가 있을 수도 있으니 감안하시고 확인하시기 바랍니다. 윈도우즈용 Scrivener 3.0 베타 41 출시 문서 에서 바뀐 것은 버그 수정 부분이네요.

윈도우즈용 Scrivener 3.0 베타 41 출시 문서

이 문서는 공식 번역이 아니라는 사실을 밝혀둡니다. 다소 오류가 있을 수도 있으니 감안하시고 확인하시기 바랍니다. 윈도우즈용 Scrivener 3.0 베타 40 출시 문서 에서 바뀐 것은 버그 수정 부분이네요.