Merge pull request #3 from xpressengine/develop

Develop
This commit is contained in:
퍼니엑스이 2014-02-25 13:01:14 +09:00
commit ba18449544
16 changed files with 198 additions and 39 deletions

View file

@ -640,7 +640,7 @@ class FileHandler
break;
}
return (int) $val;
return $val;
}
/**

View file

@ -148,7 +148,7 @@ class XEHttpRequest
$is_chunked = FALSE;
while(strlen(trim($line = fgets($sock))))
{
list($equiv, $content) = preg_split('/ *: */', rtrim($line), 1);
list($equiv, $content) = preg_split('/ *: */', rtrim($line), 2);
if(!strcasecmp($equiv, 'Transfer-Encoding') && $content == 'chunked')
{
$is_chunked = TRUE;

View file

@ -14,6 +14,7 @@
<permission action="procDocumentMoveCategory" target="member" />
<permission action="procDocumentDeleteCategory" target="member" />
<permission action="procDocumentMakeXmlFile" target="member" />
<permission action="procDocumentAdminMoveToTrash" target="member" />
</permissions>
<actions>
<action name="dispDocumentPrint" type="view" />
@ -58,6 +59,7 @@
<action name="procDocumentAdminInsertConfig" type="controller" />
<action name="procDocumentAdminDeleteAllThumbnail" type="controller" />
<action name="procDocumentAdminCancelDeclare" type="controller" />
<action name="procDocumentAdminMoveToTrash" type="controller" />
</actions>
<menus>

View file

@ -712,6 +712,81 @@ class documentAdminController extends document
return $this->setRedirectUrl($returnUrl, $output);
}
/**
* @fn procDocumentAdminMoveToTrash
* @brief move a document to trash.
* @see documentModel::getDocumentMenu
*/
function procDocumentAdminMoveToTrash()
{
$document_srl = Context::get('document_srl');
$oDocumentModel = getModel('document');
$oDocumentController = getController('document');
$oDocument = $oDocumentModel->getDocument($document_srl, false, false);
if(!$oDocument->isGranted()) return $this->stop('msg_not_permitted');
$oModuleModel = getModel('module');
$module_info = $oModuleModel->getModuleInfoByDocumentSrl($document_srl);
$args = new stdClass();
$args->description = $message_content;
$args->document_srl = $document_srl;
$oDocumentController->moveDocumentToTrash($args);
$returnUrl = Context::get('success_return_url');
if(!$returnUrl)
{
$arrUrl = parse_url(Context::get('cur_url'));
$query = "";
if($arrUrl['query'])
{
parse_str($arrUrl['query'], $arrQuery);
// set query
if(isset($arrQuery['document_srl']))
unset($arrQuery['document_srl']);
$searchArgs = new stdClass;
foreach($arrQuery as $key=>$val)
{
$searchArgs->{$key} = $val;
}
if(!isset($searchArgs->sort_index))
$searchArgs->sort_index = $module_info->order_target;
foreach($module_info as $key=>$val)
{
if(!isset($searchArgs->{$key}))
$searchArgs->{$key} = $val;
}
$oDocumentModel = getModel('document');
$output = $oDocumentModel->getDocumentList($searchArgs, $module_info->except_notice, TRUE, array('document_srl'));
$cur_page = 1;
if(isset($arrQuery['page'])) {
$cur_page = (int)$arrQuery['page'];
}
if($cur_page>1 && count($output->data) == 0)
$arrQuery['page'] = $cur_page - 1;
$query = "?";
foreach($arrQuery as $key=>$val)
$query .= sprintf("%s=%s&", $key, $val);
$query = substr($query, 0, -1);
}
$returnUrl = $arrUrl['path'] . $query;
}
$this->add('redirect_url', $returnUrl);
}
/**
* Restor document from trash
* @return void|object

View file

@ -832,6 +832,14 @@ class documentController extends document
$args->document_srl = $document_srl;
$output = executeQuery('document.updateReadedCount', $args);
$oCacheHandler = CacheHandler::getInstance('object');
if($oCacheHandler->isSupport())
{
//remove document item from cache
$cache_key = 'document_item:'. getNumberingPath($document_srl) . $document_srl;
$oCacheHandler->delete($cache_key);
}
// Register session
$_SESSION['readed_document'][$document_srl] = true;
@ -1097,6 +1105,14 @@ class documentController extends document
$oDB->commit();
$oCacheHandler = CacheHandler::getInstance('object');
if($oCacheHandler->isSupport())
{
//remove document item from cache
$cache_key = 'document_item:'. getNumberingPath($document_srl) . $document_srl;
$oCacheHandler->delete($cache_key);
}
// Leave in the session information
$_SESSION['voted_document'][$document_srl] = true;
@ -1238,6 +1254,14 @@ class documentController extends document
{
$args->update_order = -1*getNextSequence();
$args->last_updater = $last_updater;
$oCacheHandler = CacheHandler::getInstance('object');
if($oCacheHandler->isSupport())
{
//remove document item from cache
$cache_key = 'document_item:'. getNumberingPath($document_srl) . $document_srl;
$oCacheHandler->delete($cache_key);
}
}
return executeQuery('document.updateCommentCount', $args);
@ -1255,6 +1279,14 @@ class documentController extends document
$args->document_srl = $document_srl;
$args->trackback_count = $trackback_count;
$oCacheHandler = CacheHandler::getInstance('object');
if($oCacheHandler->isSupport())
{
//remove document item from cache
$cache_key = 'document_item:'. getNumberingPath($document_srl) . $document_srl;
$oCacheHandler->delete($cache_key);
}
return executeQuery('document.updateTrackbackCount', $args);
}
@ -1358,6 +1390,30 @@ class documentController extends document
if(!$output->toBool()) return $output;
$this->makeCategoryFile($category_info->module_srl);
// remvove cache
$oCacheHandler = CacheHandler::getInstance('object');
if($oCacheHandler->isSupport())
{
$page = 0;
while(true) {
$args = new stdClass();
$args->category_srl = $category_srl;
$args->list_count = 100;
$args->page = ++$page;
$output = executeQuery('document.getDocumentList', $args, array('document_srl'));
if($output->data == array())
break;
foreach($output->data as $val)
{
//remove document item from cache
$cache_key = 'document_item:'. getNumberingPath($val->document_srl) . $val->document_srl;
$oCacheHandler->delete($cache_key);
}
}
}
// Update category_srl of the documents in the same category to 0
$args = new stdClass();
$args->target_category_srl = 0;

View file

@ -528,6 +528,10 @@ class documentModel extends document
if($oDocument->isExists())
{
$str_confirm = Context::getLang('cmd_document_do') . Context::getLang('confirm_delete');
$url = sprintf("if(!confirm('%s')) return; var params = new Array(); params['document_srl']='%s'; params['mid']=current_mid;params['cur_url']=current_url; exec_xml('document', 'procDocumentAdminMoveToTrash', params)", $str_confirm, $document_srl);
$oDocumentController->addDocumentPopupMenu($url,'cmd_trash','','javascript');
// Find a post equivalent to ip address
$url = getUrl('','module','admin','act','dispDocumentAdminList','search_target','ipaddress','search_keyword',$oDocument->getIpAddress());
$oDocumentController->addDocumentPopupMenu($url,'cmd_search_by_ipaddress',$icon_path,'TraceByIpaddress');

View file

@ -9,6 +9,7 @@
<conditions>
<condition operation="in" column="documents.module_srl" var="module_srl" filter="number" />
<condition operation="in" column="documents.category_srl" var="category_srl" filter="number" pipe="and" />
<condition operation="equal" column="documents.member_srl" var="member_srl" filter="number" pipe="and" />
<condition operation="equal" column="extra_vars.module_srl" default="documents.module_srl" pipe="and" />
<condition operation="equal" column="extra_vars.document_srl" default="documents.document_srl" pipe="and" />
<condition operation="equal" column="extra_vars.var_idx" var="var_idx" notnull="notnull" pipe="and" />

View file

@ -9,6 +9,7 @@
<conditions>
<condition operation="in" column="documents.module_srl" var="module_srl" filter="number" />
<condition operation="in" column="documents.category_srl" var="category_srl" filter="number" pipe="and" />
<condition operation="equal" column="documents.member_srl" var="member_srl" filter="number" pipe="and" />
<condition operation="equal" column="extra_vars.module_srl" default="documents.module_srl" pipe="and" />
<condition operation="equal" column="extra_vars.document_srl" default="documents.document_srl" pipe="and" />
<condition operation="equal" column="extra_vars.var_idx" var="var_idx" notnull="notnull" pipe="and" />

View file

@ -226,24 +226,21 @@ class fileModel extends file
function getUploadConfig()
{
$logged_info = Context::get('logged_info');
$file_config = new stdClass();
$module_srl = Context::get('module_srl');
// Get the current module if module_srl doesn't exist
if(!$module_srl)
{
$current_module_info = Context::get('current_module_info');
$module_srl = $current_module_info->module_srl;
}
$file_config = $this->getFileConfig($module_srl);
if($logged_info->is_admin == 'Y')
{
$file_config->allowed_filesize = preg_replace("/[a-z]/is","",ini_get('upload_max_filesize'));
$file_config->allowed_attach_size = preg_replace("/[a-z]/is","",ini_get('upload_max_filesize'));
$file_config->allowed_filetypes = '*.*';
}
else
{
$module_srl = Context::get('module_srl');
// Get the current module if module_srl doesn't exist
if(!$module_srl)
{
$current_module_info = Context::get('current_module_info');
$module_srl = $current_module_info->module_srl;
}
$file_config = $this->getFileConfig($module_srl);
}
return $file_config;
}

View file

@ -937,6 +937,7 @@ class importerAdminController extends importer
$obj->last_update = base64_decode($xmlDoc->comment->update->body);
if(!$obj->last_update) $obj->last_update = $obj->regdate;
$obj->ipaddress = base64_decode($xmlDoc->comment->ipaddress->body);
$obj->status = base64_decode($xmlDoc->comment->status->body);
$obj->list_order = $obj->comment_srl*-1;
// Change content information (attachment)
if(count($files))
@ -1010,13 +1011,13 @@ class importerAdminController extends importer
while(!feof($fp))
{
$file_obj = new stdClass;
$str = trim(fgets($fp, 1024));
// If it ends with </attaches>, break
if(trim($str) == '</attaches>') break;
// If it starts with <attach>, collect attachments
if(trim($str) == '<attach>')
{
$file_obj = new stdClass;
$file_obj->file_srl = getNextSequence();
$file_obj->upload_target_srl = $upload_target_srl;
$file_obj->module_srl = $module_srl;

View file

@ -61,6 +61,7 @@
</block>
</block>
</ul>
</div>
{@$group = ''}
{@$cnt = 1}

View file

@ -1194,27 +1194,48 @@ class memberController extends member
if(!$memberSrl) return new Object(-1, 'msg_not_exists_member');
$columnList = array('member_srl', 'user_id', 'user_name', 'nick_name', 'email_address');
$memberInfo = $oMemberModel->getMemberInfoByMemberSrl($memberSrl, 0, $columnList);
$member_info = $oMemberModel->getMemberInfoByMemberSrl($memberSrl, 0, $columnList);
// Check if a authentication mail has been sent previously
$chk_args = new stdClass;
$chk_args->member_srl = $memberInfo->member_srl;
$output = executeQuery('member.chkAuthMail', $chk_args);
if($output->toBool() && $output->data->count == '0') return new Object(-1, 'msg_invalid_request');
$auth_args = new stdClass;
$auth_args->member_srl = $memberInfo->member_srl;
$output = executeQueryArray('member.getAuthMailInfo', $auth_args);
if(!$output->data || !$output->data[0]->auth_key) return new Object(-1, 'msg_invalid_request');
$auth_info = $output->data[0];
// Get content of the email to send a member
Context::set('memberInfo', $memberInfo);
$oModuleModel = getModel('module');
$member_config = $oModuleModel->getModuleConfig('member');
if(!$member_config->skin) $member_config->skin = "default";
if(!$member_config->colorset) $member_config->colorset = "white";
// Check if a authentication mail has been sent previously
$chk_args = new stdClass;
$chk_args->member_srl = $member_info->member_srl;
$output = executeQuery('member.chkAuthMail', $chk_args);
if($output->toBool() && $output->data->count == '0') return new Object(-1, 'msg_invalid_request');
$auth_args = new stdClass;
$auth_args->member_srl = $member_info->member_srl;
$output = executeQueryArray('member.getAuthMailInfo', $auth_args);
if(!$output->data || !$output->data[0]->auth_key) return new Object(-1, 'msg_invalid_request');
$auth_info = $output->data[0];
$memberInfo = array();
global $lang;
if(is_array($member_config->signupForm))
{
$exceptForm=array('password', 'find_account_question');
foreach($member_config->signupForm as $form)
{
if(!in_array($form->name, $exceptForm) && $form->isDefaultForm && ($form->required || $form->mustRequired))
{
$memberInfo[$lang->{$form->name}] = $member_info->{$form->name};
}
}
}
else
{
$memberInfo[$lang->user_id] = $member_info->user_id;
$memberInfo[$lang->user_name] = $member_info->user_name;
$memberInfo[$lang->nick_name] = $member_info->nick_name;
$memberInfo[$lang->email_address] = $member_info->email_address;
}
// Get content of the email to send a member
Context::set('memberInfo', $memberInfo);
Context::set('member_config', $member_config);
$tpl_path = sprintf('%sskins/%s', $this->module_path, $member_config->skin);
@ -1225,9 +1246,6 @@ class memberController extends member
$oTemplate = &TemplateHandler::getInstance();
$content = $oTemplate->compile($tpl_path, 'confirm_member_account_mail');
// Get information of the Webmaster
$oModuleModel = getModel('module');
$member_config = $oModuleModel->getModuleConfig('member');
// Send a mail
$oMail = new Mail();
$oMail->setTitle( Context::getLang('msg_confirm_account_title') );
@ -1812,6 +1830,7 @@ class memberController extends member
$_SESSION['ipaddress'] = $_SERVER['REMOTE_ADDR'];
$_SESSION['member_srl'] = $this->memberInfo->member_srl;
$_SESSION['is_admin'] = '';
setcookie('xe_logged', 'true', 0, '/');
// Do not save your password in the session jiwojum;;
//unset($this->memberInfo->password);
// User Group Settings
@ -2318,10 +2337,12 @@ class memberController extends member
{
$_SESSION[$key] = '';
}
session_destroy();
setcookie(session_name(), '', $_SERVER['REQUEST_TIME']-42000, '/');
setcookie('sso','',$_SERVER['REQUEST_TIME']-42000, '/');
setcookie('xeak','',$_SERVER['REQUEST_TIME']-42000, '/');
setcookie('xe_logged', 'false', $_SERVER['REQUEST_TIME'] - 42000, '/');
if($memberSrl || $_COOKIE['xeak'])
{

View file

@ -2,7 +2,7 @@
<hr noshade="noshade" />
<ul>
<li>Site : <a href="{getUrl()}" target="_blank">{getUrl()}</a></li>
<li loop="$memberInfo=>$name,$value">{$name} : {$value}</li>
<li loop="$memberInfo=>$name,$value" cond="!is_object($value)&&!is_array($value)">{$name} : {$value}</li>
</ul>
<hr noshade="noshade" />
{$lang->msg_confirm_account_comment}<br />

View file

@ -2,7 +2,7 @@
<hr noshade="noshade" />
<ul>
<li>Site : <a href="{getUrl()}" target="_blank">{getUrl()}</a></li>
<li loop="$memberInfo=>$name,$value">{$name} : {$value}</li>
<li loop="$memberInfo=>$name,$value" cond="!is_object($value)&&!is_array($value)">{$name} : {$value}</li>
</ul>
<hr noshade="noshade" />
{sprintf($lang->msg_confirm_email_address_change, $newEmail)}<br />

View file

@ -41,7 +41,7 @@
</div>
<div>
<select name="find_account_question">
<!--@for($i=1,$c=count($lang->find_account_question_items);$i<$c;$i++)-->
<!--@for($i=1,$c=count($lang->find_account_question_items);$i<=$c;$i++)-->
<option value="{$i}">{$lang->find_account_question_items[$i]}</option>
<!--@end-->
</select>

View file

@ -2,9 +2,9 @@
<hr noshade="noshade" />
<ul>
<li>{$lang->site} : <a href="{getUrl()}" target="_blank">{getUrl()}</a></li>
<li loop="$memberInfo=>$name,$value">{$name} : {$value}</li>
<li loop="$memberInfo=>$name,$value" cond="!is_object($value)&&!is_array($value)">{$name} : {$value}</li>
<li>{$lang->password} : <span style="color:red">{$auth_args->new_password}</span></li>
</ul>
<hr noshade="noshade" />
{$lang->msg_find_account_comment}<br />
<a href="{$find_url}">{$find_url}</a>
<a href="{$find_url}">{$find_url}</a>