diff --git a/modules/point/point.admin.controller.php b/modules/point/point.admin.controller.php index 5ba78bedc..5b167a0d7 100644 --- a/modules/point/point.admin.controller.php +++ b/modules/point/point.admin.controller.php @@ -1,346 +1,371 @@ getModuleConfig('point'); + // Arrange variables + $args = Context::getRequestVars(); + // Check the point name + $config->point_name = $args->point_name; + if(!$config->point_name) $config->point_name = 'point'; + // Specify the default points + $config->signup_point = (int)$args->signup_point; + $config->login_point = (int)$args->login_point; + $config->insert_document = (int)$args->insert_document; + $config->read_document = (int)$args->read_document; + $config->insert_comment = (int)$args->insert_comment; + $config->upload_file = (int)$args->upload_file; + $config->download_file = (int)$args->download_file; + $config->voted = (int)$args->voted; + $config->blamed = (int)$args->blamed; + // The highest level + $config->max_level = $args->max_level; + if($config->max_level>1000) $config->max_level = 1000; + if($config->max_level<1) $config->max_level = 1; + // Set the level icon + $config->level_icon = $args->level_icon; + // Check if downloads are not allowed + if($args->disable_download == 'Y') $config->disable_download = 'Y'; + else $config->disable_download = 'N'; + // Check if reading a document is not allowed + if($args->disable_read_document == 'Y') $config->disable_read_document = 'Y'; + else $config->disable_read_document = 'N'; - /** - * @brief Initialization - **/ - function init() { - } + $oMemberModel = &getModel('member'); + $group_list = $oMemberModel->getGroups(); - /** - * @brief Save the default configurations - **/ - function procPointAdminInsertConfig() { - // Get the configuration information - $oModuleModel = &getModel('module'); - $config = $oModuleModel->getModuleConfig('point'); - // Arrange variables - $args = Context::getRequestVars(); - // Check the point name - $config->point_name = $args->point_name; - if(!$config->point_name) $config->point_name = 'point'; - // Specify the default points - $config->signup_point = (int)$args->signup_point; - $config->login_point = (int)$args->login_point; - $config->insert_document = (int)$args->insert_document; - $config->read_document = (int)$args->read_document; - $config->insert_comment = (int)$args->insert_comment; - $config->upload_file = (int)$args->upload_file; - $config->download_file = (int)$args->download_file; - $config->voted = (int)$args->voted; - $config->blamed = (int)$args->blamed; - // The highest level - $config->max_level = $args->max_level; - if($config->max_level>1000) $config->max_level = 1000; - if($config->max_level<1) $config->max_level = 1; - // Set the level icon - $config->level_icon = $args->level_icon; - // Check if downloads are not allowed - if($args->disable_download == 'Y') $config->disable_download = 'Y'; - else $config->disable_download = 'N'; - // Check if reading a document is not allowed - if($args->disable_read_document == 'Y') $config->disable_read_document = 'Y'; - else $config->disable_read_document = 'N'; + // Per-level group configurations + foreach($group_list as $group) + { + // Admin group should not be connected to point. + if($group->is_admin == 'Y' || $group->is_default == 'Y') continue; - $oMemberModel = &getModel('member'); - $group_list = $oMemberModel->getGroups(); - - // Per-level group configurations - foreach($group_list as $group) + $group_srl = $group->group_srl; + if($args->{'point_group_'.$group_srl}) { - // Admin group should not be connected to point. - if($group->is_admin == 'Y' || $group->is_default == 'Y') continue; - - $group_srl = $group->group_srl; - if($args->{'point_group_'.$group_srl}) - { - $config->point_group[$group_srl] = $args->{'point_group_'.$group_srl}; - } - else - { - unset($config->point_group[$group_srl]); - } + $config->point_group[$group_srl] = $args->{'point_group_'.$group_srl}; } - - $config->group_reset = $args->group_reset; - // Per-level point configurations - unset($config->level_step); - for($i=1;$i<=$config->max_level;$i++) { - $key = "level_step_".$i; - $config->level_step[$i] = (int)$args->{$key}; - } - // A function to calculate per-level points - $config->expression = $args->expression; - // Save - $oModuleController = &getController('module'); - $oModuleController->insertModuleConfig('point', $config); - - $this->setMessage('success_updated'); - - $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispPointAdminConfig'); - $this->setRedirectUrl($returnUrl); - } - - /** - * @brief Save per-module configurations - **/ - function procPointAdminInsertModuleConfig() { - $args = Context::getRequestVars(); - - foreach($args as $key => $val) { - preg_match("/^(insert_document|insert_comment|upload_file|download_file|read_document|voted|blamed)_([0-9]+)$/", $key, $matches); - if(!$matches[1]) continue; - $name = $matches[1]; - $module_srl = $matches[2]; - if(strlen($val)>0) $module_config[$module_srl][$name] = (int)$val; - } - - $oModuleController = &getController('module'); - if(count($module_config)) { - foreach($module_config as $module_srl => $config) { - $oModuleController->insertModulePartConfig('point',$module_srl,$config); - } - } - - $this->setMessage('success_updated'); - if(!in_array(Context::getRequestMethod(),array('XMLRPC','JSON'))) { - $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispPointAdminModuleConfig'); - header('location:'.$returnUrl); - return; - } - } - - /** - * @brief Save individual points per module - **/ - function procPointAdminInsertPointModuleConfig() { - $module_srl = Context::get('target_module_srl'); - if(!$module_srl) return new Object(-1, 'msg_invalid_request'); - // In case of batch configuration of several modules - if(preg_match('/^([0-9,]+)$/',$module_srl)) $module_srl = explode(',',$module_srl); - else $module_srl = array($module_srl); - // Save configurations - $oModuleController = &getController('module'); - for($i=0;$iinsertModulePartConfig('point', $srl, $config); - } - - $this->setError(-1); - $this->setMessage('success_updated', 'info'); - - $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispBoardAdminContent'); - $this->setRedirectUrl($returnUrl); - } - - /** - * @brief Change members points - **/ - function procPointAdminUpdatePoint() { - $member_srl = Context::get('member_srl'); - $point = Context::get('point'); - - preg_match('/^(\+|-)?([1-9][0-9]*)$/', $point, $m); - - $action = ''; - switch($m[1]) + else { - case '+': - $action = 'add'; - break; - - case '-': - $action = 'minus'; - break; - - default: - $action = 'update'; - break; + unset($config->point_group[$group_srl]); } - $point = $m[2]; + } - $oPointController = &getController('point'); - $output = $oPointController->setPoint($member_srl, (int)$point, $action); + $config->group_reset = $args->group_reset; + // Per-level point configurations + unset($config->level_step); + for($i=1;$i<=$config->max_level;$i++) + { + $key = "level_step_".$i; + $config->level_step[$i] = (int)$args->{$key}; + } + // A function to calculate per-level points + $config->expression = $args->expression; + // Save + $oModuleController = &getController('module'); + $oModuleController->insertModuleConfig('point', $config); - $this->setError(-1); - $this->setMessage('success_updated', 'info'); + $this->setMessage('success_updated'); - $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispPointAdminPointList'); - return $this->setRedirectUrl($returnUrl, $output); - } + $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispPointAdminConfig'); + $this->setRedirectUrl($returnUrl); + } - /** - * @brief Recalculate points based on the list/comment/attachment and registration information. Granted only once a first-time login score. - **/ - function procPointAdminReCal() { - set_time_limit(0); - // Get per-module points information - $oModuleModel = &getModel('module'); - $config = $oModuleModel->getModuleConfig('point'); + /** + * @brief Save per-module configurations + */ + function procPointAdminInsertModuleConfig() + { + $args = Context::getRequestVars(); - $module_config = $oModuleModel->getModulePartConfigs('point'); - // A variable to store member's points - $member = array(); - - // Get member infomation - $output = executeQueryArray('point.getMemberCount'); - if(!$output->toBool()) return $output; - - if($output->data) { - foreach($output->data as $key => $val) { - if(!$val->member_srl) continue; - $member[$val->member_srl] = 0; - } + foreach($args as $key => $val) + { + preg_match("/^(insert_document|insert_comment|upload_file|download_file|read_document|voted|blamed)_([0-9]+)$/", $key, $matches); + if(!$matches[1]) continue; + $name = $matches[1]; + $module_srl = $matches[2]; + if(strlen($val)>0) $module_config[$module_srl][$name] = (int)$val; + } + + $oModuleController = &getController('module'); + if(count($module_config)) + { + foreach($module_config as $module_srl => $config) + { + $oModuleController->insertModulePartConfig('point',$module_srl,$config); } + } - // Get post information - $output = executeQueryArray('point.getDocumentPoint'); - if(!$output->toBool()) return $output; + $this->setMessage('success_updated'); + if(!in_array(Context::getRequestMethod(),array('XMLRPC','JSON'))) + { + $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispPointAdminModuleConfig'); + header('location:'.$returnUrl); + return; + } + } - if($output->data) { - foreach($output->data as $key => $val) { - if($module_config[$val->module_srl]['insert_document']) $insert_point = $module_config[$val->module_srl]['insert_document']; - else $insert_point = $config->insert_document; + /** + * @brief Save individual points per module + */ + function procPointAdminInsertPointModuleConfig() + { + $module_srl = Context::get('target_module_srl'); + if(!$module_srl) return new Object(-1, 'msg_invalid_request'); + // In case of batch configuration of several modules + if(preg_match('/^([0-9,]+)$/',$module_srl)) $module_srl = explode(',',$module_srl); + else $module_srl = array($module_srl); + // Save configurations + $oModuleController = &getController('module'); + for($i=0;$iinsertModulePartConfig('point', $srl, $config); + } - if(!$val->member_srl) continue; - $point = $insert_point * $val->count; - $member[$val->member_srl] += $point; - } + $this->setError(-1); + $this->setMessage('success_updated', 'info'); + + $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispBoardAdminContent'); + $this->setRedirectUrl($returnUrl); + } + + /** + * @brief Change members points + */ + function procPointAdminUpdatePoint() + { + $member_srl = Context::get('member_srl'); + $point = Context::get('point'); + + preg_match('/^(\+|-)?([1-9][0-9]*)$/', $point, $m); + + $action = ''; + switch($m[1]) + { + case '+': + $action = 'add'; + break; + case '-': + $action = 'minus'; + break; + default: + $action = 'update'; + break; + } + $point = $m[2]; + + $oPointController = &getController('point'); + $output = $oPointController->setPoint($member_srl, (int)$point, $action); + + $this->setError(-1); + $this->setMessage('success_updated', 'info'); + + $returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispPointAdminPointList'); + return $this->setRedirectUrl($returnUrl, $output); + } + + /** + * @brief Recalculate points based on the list/comment/attachment and registration information. Granted only once a first-time login score. + */ + function procPointAdminReCal() + { + set_time_limit(0); + // Get per-module points information + $oModuleModel = &getModel('module'); + $config = $oModuleModel->getModuleConfig('point'); + + $module_config = $oModuleModel->getModulePartConfigs('point'); + // A variable to store member's points + $member = array(); + + // Get member infomation + $output = executeQueryArray('point.getMemberCount'); + if(!$output->toBool()) return $output; + + if($output->data) + { + foreach($output->data as $key => $val) + { + if(!$val->member_srl) continue; + $member[$val->member_srl] = 0; } + } - $output = null; - // Get comments information - $output = executeQueryArray('point.getCommentPoint'); - if(!$output->toBool()) return $output; + // Get post information + $output = executeQueryArray('point.getDocumentPoint'); + if(!$output->toBool()) return $output; - if($output->data) { - foreach($output->data as $key => $val) { - if($module_config[$val->module_srl]['insert_comment']) $insert_point = $module_config[$val->module_srl]['insert_comment']; - else $insert_point = $config->insert_comment; + if($output->data) + { + foreach($output->data as $key => $val) + { + if($module_config[$val->module_srl]['insert_document']) $insert_point = $module_config[$val->module_srl]['insert_document']; + else $insert_point = $config->insert_document; - if(!$val->member_srl) continue; - $point = $insert_point * $val->count; - $member[$val->member_srl] += $point; - } - } - $output = null; - // Get the attached files' information - $output = executeQueryArray('point.getFilePoint'); - if(!$output->toBool()) return $output; + if(!$val->member_srl) continue; + $point = $insert_point * $val->count; + $member[$val->member_srl] += $point; + } + } - if($output->data) { - foreach($output->data as $key => $val) { - if($module_config[$val->module_srl]['upload_file']) $insert_point = $module_config[$val->module_srl]['upload_file']; - else $insert_point = $config->upload_file; + $output = null; + // Get comments information + $output = executeQueryArray('point.getCommentPoint'); + if(!$output->toBool()) return $output; - if(!$val->member_srl) continue; - $point = $insert_point * $val->count; - $member[$val->member_srl] += $point; - } - } - $output = null; - // Set all members' points to 0 - $output = executeQuery("point.initMemberPoint"); - if(!$output->toBool()) return $output; - // Save the file temporarily - $f = fopen("./files/cache/pointRecal.txt","w"); - foreach($member as $key => $val) { - $val += (int)$config->signup_point; - fwrite($f, $key.','.$val."\r\n"); - } - fclose($f); + if($output->data) + { + foreach($output->data as $key => $val) + { + if($module_config[$val->module_srl]['insert_comment']) $insert_point = $module_config[$val->module_srl]['insert_comment']; + else $insert_point = $config->insert_comment; - $this->add('total', count($member)); - $this->add('position', 0); - $this->setMessage( sprintf(Context::getLang('point_recal_message'), 0, $this->get('total')) ); - } + if(!$val->member_srl) continue; + $point = $insert_point * $val->count; + $member[$val->member_srl] += $point; + } + } + $output = null; + // Get the attached files' information + $output = executeQueryArray('point.getFilePoint'); + if(!$output->toBool()) return $output; - /** - * @brief Apply member points saved by file to units of 5,000 people - **/ - function procPointAdminApplyPoint() { - $position = (int)Context::get('position'); - $total = (int)Context::get('total'); + if($output->data) + { + foreach($output->data as $key => $val) + { + if($module_config[$val->module_srl]['upload_file']) $insert_point = $module_config[$val->module_srl]['upload_file']; + else $insert_point = $config->upload_file; - if(!file_exists('./files/cache/pointRecal.txt')) return new Object(-1, 'msg_invalid_request'); + if(!$val->member_srl) continue; + $point = $insert_point * $val->count; + $member[$val->member_srl] += $point; + } + } + $output = null; + // Set all members' points to 0 + $output = executeQuery("point.initMemberPoint"); + if(!$output->toBool()) return $output; + // Save the file temporarily + $f = fopen("./files/cache/pointRecal.txt","w"); + foreach($member as $key => $val) + { + $val += (int)$config->signup_point; + fwrite($f, $key.','.$val."\r\n"); + } + fclose($f); - $idx = 0; - $f = fopen("./files/cache/pointRecal.txt","r"); - while(!feof($f)) { - $str = trim(fgets($f, 1024)); - $idx ++; - if($idx > $position) { - list($member_srl, $point) = explode(',',$str); + $this->add('total', count($member)); + $this->add('position', 0); + $this->setMessage( sprintf(Context::getLang('point_recal_message'), 0, $this->get('total')) ); + } - $args = null; - $args->member_srl = $member_srl; - $args->point = $point; - $output = executeQuery('point.insertPoint',$args); - if($idx%5000==0) break; - } - } + /** + * @brief Apply member points saved by file to units of 5,000 people + */ + function procPointAdminApplyPoint() + { + $position = (int)Context::get('position'); + $total = (int)Context::get('total'); - if(feof($f)) { - FileHandler::removeFile('./files/cache/pointRecal.txt'); - $idx = $total; + if(!file_exists('./files/cache/pointRecal.txt')) return new Object(-1, 'msg_invalid_request'); - FileHandler::rename('./files/member_extra_info/point','./files/member_extra_info/point.old'); + $idx = 0; + $f = fopen("./files/cache/pointRecal.txt","r"); + while(!feof($f)) + { + $str = trim(fgets($f, 1024)); + $idx ++; + if($idx > $position) + { + list($member_srl, $point) = explode(',',$str); - FileHandler::removeDir('./files/member_extra_info/point.old'); - } - fclose($f); + $args = null; + $args->member_srl = $member_srl; + $args->point = $point; + $output = executeQuery('point.insertPoint',$args); + if($idx%5000==0) break; + } + } - $this->add('total', $total); - $this->add('position', $idx); - $this->setMessage(sprintf(Context::getLang('point_recal_message'), $idx, $total)); + if(feof($f)) + { + FileHandler::removeFile('./files/cache/pointRecal.txt'); + $idx = $total; - } + FileHandler::rename('./files/member_extra_info/point','./files/member_extra_info/point.old'); - /** - * @brief Reset points for each module - **/ - function procPointAdminReset() { - $module_srl = Context::get('module_srls'); - if(!$module_srl) return new Object(-1, 'msg_invalid_request'); - // In case of batch configuration of several modules - if(preg_match('/^([0-9,]+)$/',$module_srl)) $module_srl = explode(',',$module_srl); - else $module_srl = array($module_srl); - // Save configurations - $oModuleController = &getController('module'); - for($i=0;$imodule = 'point'; - $args->module_srl = $srl; - executeQuery('module.deleteModulePartConfig', $args); - } + FileHandler::removeDir('./files/member_extra_info/point.old'); + } + fclose($f); - $this->setMessage('success_updated'); - } + $this->add('total', $total); + $this->add('position', $idx); + $this->setMessage(sprintf(Context::getLang('point_recal_message'), $idx, $total)); - /** - * @brief Save the cache files - * @deprecated - **/ - function cacheActList() { - return; - } + } - } -?> + /** + * @brief Reset points for each module + */ + function procPointAdminReset() + { + $module_srl = Context::get('module_srls'); + if(!$module_srl) return new Object(-1, 'msg_invalid_request'); + // In case of batch configuration of several modules + if(preg_match('/^([0-9,]+)$/',$module_srl)) $module_srl = explode(',',$module_srl); + else $module_srl = array($module_srl); + // Save configurations + $oModuleController = &getController('module'); + for($i=0;$imodule = 'point'; + $args->module_srl = $srl; + executeQuery('module.deleteModulePartConfig', $args); + } + + $this->setMessage('success_updated'); + } + + /** + * @brief Save the cache files + * @deprecated + */ + function cacheActList() + { + return; + } +} +/* End of file point.admin.controller.php */ +/* Location: ./modules/point/point.admin.controller.php */ diff --git a/modules/point/point.admin.view.php b/modules/point/point.admin.view.php index 1f53619a4..ed81ae0c6 100644 --- a/modules/point/point.admin.view.php +++ b/modules/point/point.admin.view.php @@ -1,117 +1,124 @@ getModuleConfig('point'); + // Set the configuration variable + Context::set('config', $config); - class pointAdminView extends point { + //Security + $security = new Security(); + $security->encodeHTML('config.point_name','config.level_icon'); + $security->encodeHTML('module_info..'); - /** - * @brief Initialization - **/ - function init() { - // Get teh configuration information - $oModuleModel = &getModel('module'); - $config = $oModuleModel->getModuleConfig('point'); - // Set the configuration variable - Context::set('config', $config); + // Set the template path + $this->setTemplatePath($this->module_path.'tpl'); + } - //Security - $security = new Security(); - $security->encodeHTML('config.point_name','config.level_icon'); - $security->encodeHTML('module_info..'); + /** + * @brief Default configurations + */ + function dispPointAdminConfig() + { + // Get the list of level icons + $level_icon_list = FileHandler::readDir("./modules/point/icons"); + Context::set('level_icon_list', $level_icon_list); + // Get the list of groups + $oMemberModel = &getModel('member'); + $group_list = $oMemberModel->getGroups(); + $selected_group_list = array(); + if(count($group_list)) + { + foreach($group_list as $key => $val) + { + $selected_group_list[$key] = $val; + } + } + Context::set('group_list', $selected_group_list); + //Security + $security = new Security(); + $security->encodeHTML('group_list..title','group_list..description'); - // Set the template path - $this->setTemplatePath($this->module_path.'tpl'); - } + // Set the template + $this->setTemplateFile('config'); + } - /** - * @brief Default configurations - **/ - function dispPointAdminConfig() { - // Get the list of level icons - $level_icon_list = FileHandler::readDir("./modules/point/icons"); - Context::set('level_icon_list', $level_icon_list); - // Get the list of groups - $oMemberModel = &getModel('member'); - $group_list = $oMemberModel->getGroups(); - $selected_group_list = array(); - if(count($group_list)) { - foreach($group_list as $key => $val) { - $selected_group_list[$key] = $val; - } - } - Context::set('group_list', $selected_group_list); - //Security - $security = new Security(); - $security->encodeHTML('group_list..title','group_list..description'); + /** + * @brief Set per-module scores + */ + function dispPointAdminModuleConfig() + { + // Get a list of mid + $oModuleModel = &getModel('module'); + $columnList = array('module_srl', 'mid', 'browser_title'); + $mid_list = $oModuleModel->getMidList(null, $columnList); + Context::set('mid_list', $mid_list); - // Set the template - $this->setTemplateFile('config'); - } + Context::set('module_config', $oModuleModel->getModulePartConfigs('point')); + //Security + $security = new Security(); + $security->encodeHTML('mid_list..browser_title','mid_list..mid'); - /** - * @brief Set per-module scores - **/ - function dispPointAdminModuleConfig() { - // Get a list of mid - $oModuleModel = &getModel('module'); - $columnList = array('module_srl', 'mid', 'browser_title'); - $mid_list = $oModuleModel->getMidList(null, $columnList); - Context::set('mid_list', $mid_list); + // Set the template + $this->setTemplateFile('module_config'); + } - Context::set('module_config', $oModuleModel->getModulePartConfigs('point')); - //Security - $security = new Security(); - $security->encodeHTML('mid_list..browser_title','mid_list..mid'); + /** + * @brief Configure the functional act + */ + function dispPointAdminActConfig() + { + // Set the template + $this->setTemplateFile('action_config'); + } - // Set the template - $this->setTemplateFile('module_config'); - } + /** + * @brief Get a list of member points + */ + function dispPointAdminPointList() + { + $oPointModel = &getModel('point'); - /** - * @brief Configure the functional act - **/ - function dispPointAdminActConfig() { - // Set the template - $this->setTemplateFile('action_config'); - } + $args->list_count = 20; + $args->page = Context::get('page'); - /** - * @brief Get a list of member points - **/ - function dispPointAdminPointList() { - $oPointModel = &getModel('point'); + $oMemberModel = &getModel('member'); + $memberConfig = $oMemberModel->getMemberConfig(); - $args->list_count = 20; - $args->page = Context::get('page'); + Context::set('identifier', $memberConfig->identifier); - $oMemberModel = &getModel('member'); - $memberConfig = $oMemberModel->getMemberConfig(); + $columnList = array('member.member_srl', 'member.user_id', 'member.email_address', 'member.nick_name', 'point.point'); + $output = $oPointModel->getMemberList($args, $columnList); + // context::set for writing into a template + Context::set('total_count', $output->total_count); + Context::set('total_page', $output->total_page); + Context::set('page', $output->page); + Context::set('member_list', $output->data); + Context::set('page_navigation', $output->page_navigation); + // Create a member model object + $oMemberModel = &getModel('member'); + // Get a list of groups + $this->group_list = $oMemberModel->getGroups(); + Context::set('group_list', $this->group_list); + //Security + $security = new Security(); + $security->encodeHTML('group_list..title','group_list..description'); + $security->encodeHTML('member_list..'); - Context::set('identifier', $memberConfig->identifier); - - $columnList = array('member.member_srl', 'member.user_id', 'member.email_address', 'member.nick_name', 'point.point'); - $output = $oPointModel->getMemberList($args, $columnList); - // context::set for writing into a template - Context::set('total_count', $output->total_count); - Context::set('total_page', $output->total_page); - Context::set('page', $output->page); - Context::set('member_list', $output->data); - Context::set('page_navigation', $output->page_navigation); - // Create a member model object - $oMemberModel = &getModel('member'); - // Get a list of groups - $this->group_list = $oMemberModel->getGroups(); - Context::set('group_list', $this->group_list); - //Security - $security = new Security(); - $security->encodeHTML('group_list..title','group_list..description'); - $security->encodeHTML('member_list..'); - - // Set the template - $this->setTemplateFile('member_list'); - } - } -?> + // Set the template + $this->setTemplateFile('member_list'); + } +} +/* End of file point.admin.view.php */ +/* Location: ./modules/point/point.admin.view.php */ diff --git a/modules/point/point.class.php b/modules/point/point.class.php index da9b2f169..30d8ee126 100644 --- a/modules/point/point.class.php +++ b/modules/point/point.class.php @@ -1,180 +1,184 @@ max_level = 30; + // Per-level score + for($i=1;$i<=30;$i++) + { + $config->level_step[$i] = pow($i,2)*90; + } + // Points for registration + $config->signup_point = 10; + // Login points + $config->login_point = 5; + // Point's name + $config->point_name = 'point'; + // Level icon directory + $config->level_icon = "default"; + // Prevent downloads if there are no scores + $config->disable_download = false; - /** - * @brief Additional tasks required to accomplish during the installation - **/ - function moduleInstall() { - // Registration in action forward (for using in the administrator mode) - $oModuleController = &getController('module'); - // Create a directory to store points information - FileHandler::makeDir('./files/member_extra_info/point'); + /** + * Define the default points per module as well as all actions (as we do not know if it is forum or blogs, specify "act") + */ + // Insert document + $config->insert_document = 10; - $oModuleController = &getController('module'); - // The highest level - $config->max_level = 30; - // Per-level score - for($i=1;$i<=30;$i++) { - $config->level_step[$i] = pow($i,2)*90; - } - // Points for registration - $config->signup_point = 10; - // Login points - $config->login_point = 5; - // Point's name - $config->point_name = 'point'; - // Level icon directory - $config->level_icon = "default"; - // Prevent downloads if there are no scores - $config->disable_download = false; + $config->insert_document_act = 'procBoardInsertDocument'; + $config->delete_document_act = 'procBoardDeleteDocument'; + // Insert comment + $config->insert_comment = 5; - /** - * Define the default points per module as well as all actions (as we do not know if it is forum or blogs, specify "act") - **/ - // Insert document - $config->insert_document = 10; + $config->insert_comment_act = 'procBoardInsertComment,procBlogInsertComment'; + $config->delete_comment_act = 'procBoardDeleteComment,procBlogDeleteComment'; + // Upload + $config->upload_file = 5; - $config->insert_document_act = 'procBoardInsertDocument'; - $config->delete_document_act = 'procBoardDeleteDocument'; - // Insert comment - $config->insert_comment = 5; + $config->upload_file_act = 'procFileUpload'; + $config->delete_file_act = 'procFileDelete'; + // Download + $config->download_file = -5; + $config->download_file_act = 'procFileDownload'; + // View + $config->read_document = 0; + // Vote up / Vote down + $config->voted = 0; + $config->blamed = 0; + // Save configurations + $oModuleController->insertModuleConfig('point', $config); + // Cash act list for faster execution + $oPointController = &getAdminController('point'); + $oPointController->cacheActList(); + // Add a trigger for registration/insert document/insert comment/upload a file/download + $oModuleController->insertTrigger('member.insertMember', 'point', 'controller', 'triggerInsertMember', 'after'); + $oModuleController->insertTrigger('document.insertDocument', 'point', 'controller', 'triggerInsertDocument', 'after'); + $oModuleController->insertTrigger('document.deleteDocument', 'point', 'controller', 'triggerBeforeDeleteDocument', 'before'); + $oModuleController->insertTrigger('document.deleteDocument', 'point', 'controller', 'triggerDeleteDocument', 'after'); + $oModuleController->insertTrigger('comment.insertComment', 'point', 'controller', 'triggerInsertComment', 'after'); + $oModuleController->insertTrigger('comment.deleteComment', 'point', 'controller', 'triggerDeleteComment', 'after'); + $oModuleController->insertTrigger('file.insertFile', 'point', 'controller', 'triggerInsertFile', 'after'); + $oModuleController->insertTrigger('file.deleteFile', 'point', 'controller', 'triggerDeleteFile', 'after'); + $oModuleController->insertTrigger('file.downloadFile', 'point', 'controller', 'triggerBeforeDownloadFile', 'before'); + $oModuleController->insertTrigger('file.downloadFile', 'point', 'controller', 'triggerDownloadFile', 'after'); + $oModuleController->insertTrigger('member.doLogin', 'point', 'controller', 'triggerAfterLogin', 'after'); + $oModuleController->insertTrigger('module.dispAdditionSetup', 'point', 'view', 'triggerDispPointAdditionSetup', 'after'); + $oModuleController->insertTrigger('document.updateReadedCount', 'point', 'controller', 'triggerUpdateReadedCount', 'after'); + // Add a trigger for voting up and down 2008.05.13 haneul + $oModuleController->insertTrigger('document.updateVotedCount', 'point', 'controller', 'triggerUpdateVotedCount', 'after'); + // Add a trigger for using points for permanent saving of a temporarily saved document 2009.05.19 zero + $oModuleController->insertTrigger('document.updateDocument', 'point', 'controller', 'triggerUpdateDocument', 'before'); - $config->insert_comment_act = 'procBoardInsertComment,procBlogInsertComment'; - $config->delete_comment_act = 'procBoardDeleteComment,procBlogDeleteComment'; - // Upload - $config->upload_file = 5; + return new Object(); + } - $config->upload_file_act = 'procFileUpload'; - $config->delete_file_act = 'procFileDelete'; - // Download - $config->download_file = -5; - $config->download_file_act = 'procFileDownload'; - // View - $config->read_document = 0; - // Vote up / Vote down - $config->voted = 0; - $config->blamed = 0; - // Save configurations - $oModuleController->insertModuleConfig('point', $config); - // Cash act list for faster execution - $oPointController = &getAdminController('point'); - $oPointController->cacheActList(); - // Add a trigger for registration/insert document/insert comment/upload a file/download - $oModuleController->insertTrigger('member.insertMember', 'point', 'controller', 'triggerInsertMember', 'after'); - $oModuleController->insertTrigger('document.insertDocument', 'point', 'controller', 'triggerInsertDocument', 'after'); - $oModuleController->insertTrigger('document.deleteDocument', 'point', 'controller', 'triggerBeforeDeleteDocument', 'before'); - $oModuleController->insertTrigger('document.deleteDocument', 'point', 'controller', 'triggerDeleteDocument', 'after'); - $oModuleController->insertTrigger('comment.insertComment', 'point', 'controller', 'triggerInsertComment', 'after'); - $oModuleController->insertTrigger('comment.deleteComment', 'point', 'controller', 'triggerDeleteComment', 'after'); - $oModuleController->insertTrigger('file.insertFile', 'point', 'controller', 'triggerInsertFile', 'after'); - $oModuleController->insertTrigger('file.deleteFile', 'point', 'controller', 'triggerDeleteFile', 'after'); - $oModuleController->insertTrigger('file.downloadFile', 'point', 'controller', 'triggerBeforeDownloadFile', 'before'); - $oModuleController->insertTrigger('file.downloadFile', 'point', 'controller', 'triggerDownloadFile', 'after'); - $oModuleController->insertTrigger('member.doLogin', 'point', 'controller', 'triggerAfterLogin', 'after'); - $oModuleController->insertTrigger('module.dispAdditionSetup', 'point', 'view', 'triggerDispPointAdditionSetup', 'after'); - $oModuleController->insertTrigger('document.updateReadedCount', 'point', 'controller', 'triggerUpdateReadedCount', 'after'); - // Add a trigger for voting up and down 2008.05.13 haneul - $oModuleController->insertTrigger('document.updateVotedCount', 'point', 'controller', 'triggerUpdateVotedCount', 'after'); - // Add a trigger for using points for permanent saving of a temporarily saved document 2009.05.19 zero - $oModuleController->insertTrigger('document.updateDocument', 'point', 'controller', 'triggerUpdateDocument', 'before'); + /** + * @brief A method to check if the installation has been successful + */ + function checkUpdate() + { + // Get the information of the point module + $oModuleModel = &getModel('module'); + // Add a trigger for registration/insert document/insert comment/upload a file/download + if(!$oModuleModel->getTrigger('member.insertMember', 'point', 'controller', 'triggerInsertMember', 'after')) return true; + if(!$oModuleModel->getTrigger('document.insertDocument', 'point', 'controller', 'triggerInsertDocument', 'after')) return true; + if(!$oModuleModel->getTrigger('document.deleteDocument', 'point', 'controller', 'triggerBeforeDeleteDocument', 'before')) return true; + if(!$oModuleModel->getTrigger('document.deleteDocument', 'point', 'controller', 'triggerDeleteDocument', 'after')) return true; + if(!$oModuleModel->getTrigger('comment.insertComment', 'point', 'controller', 'triggerInsertComment', 'after')) return true; + if(!$oModuleModel->getTrigger('comment.deleteComment', 'point', 'controller', 'triggerDeleteComment', 'after')) return true; + if(!$oModuleModel->getTrigger('file.insertFile', 'point', 'controller', 'triggerInsertFile', 'after')) return true; + if(!$oModuleModel->getTrigger('file.deleteFile', 'point', 'controller', 'triggerDeleteFile', 'after')) return true; + if(!$oModuleModel->getTrigger('file.downloadFile', 'point', 'controller', 'triggerBeforeDownloadFile', 'before')) return true; + if(!$oModuleModel->getTrigger('file.downloadFile', 'point', 'controller', 'triggerDownloadFile', 'after')) return true; + if(!$oModuleModel->getTrigger('member.doLogin', 'point', 'controller', 'triggerAfterLogin', 'after')) return true; + if(!$oModuleModel->getTrigger('module.dispAdditionSetup', 'point', 'view', 'triggerDispPointAdditionSetup', 'after')) return true; + if(!$oModuleModel->getTrigger('document.updateReadedCount', 'point', 'controller', 'triggerUpdateReadedCount', 'after')) return true; + // Add a trigger for voting up and down 2008.05.13 haneul + if(!$oModuleModel->getTrigger('document.updateVotedCount', 'point', 'controller', 'triggerUpdateVotedCount', 'after')) return true; + // Add a trigger for using points for permanent saving of a temporarily saved document 2009.05.19 zero + if(!$oModuleModel->getTrigger('document.updateDocument', 'point', 'controller', 'triggerUpdateDocument', 'before')) return true; - return new Object(); - } + // 2012. 08. 29 Add a trigger to copy additional setting when the module is copied + if(!$oModuleModel->getTrigger('module.procModuleAdminCopyModule', 'point', 'controller', 'triggerCopyModule', 'after')) return true; - /** - * @brief A method to check if the installation has been successful - **/ - function checkUpdate() { - // Get the information of the point module - $oModuleModel = &getModel('module'); - // Add a trigger for registration/insert document/insert comment/upload a file/download - if(!$oModuleModel->getTrigger('member.insertMember', 'point', 'controller', 'triggerInsertMember', 'after')) return true; - if(!$oModuleModel->getTrigger('document.insertDocument', 'point', 'controller', 'triggerInsertDocument', 'after')) return true; - if(!$oModuleModel->getTrigger('document.deleteDocument', 'point', 'controller', 'triggerBeforeDeleteDocument', 'before')) return true; - if(!$oModuleModel->getTrigger('document.deleteDocument', 'point', 'controller', 'triggerDeleteDocument', 'after')) return true; - if(!$oModuleModel->getTrigger('comment.insertComment', 'point', 'controller', 'triggerInsertComment', 'after')) return true; - if(!$oModuleModel->getTrigger('comment.deleteComment', 'point', 'controller', 'triggerDeleteComment', 'after')) return true; - if(!$oModuleModel->getTrigger('file.insertFile', 'point', 'controller', 'triggerInsertFile', 'after')) return true; - if(!$oModuleModel->getTrigger('file.deleteFile', 'point', 'controller', 'triggerDeleteFile', 'after')) return true; - if(!$oModuleModel->getTrigger('file.downloadFile', 'point', 'controller', 'triggerBeforeDownloadFile', 'before')) return true; - if(!$oModuleModel->getTrigger('file.downloadFile', 'point', 'controller', 'triggerDownloadFile', 'after')) return true; - if(!$oModuleModel->getTrigger('member.doLogin', 'point', 'controller', 'triggerAfterLogin', 'after')) return true; - if(!$oModuleModel->getTrigger('module.dispAdditionSetup', 'point', 'view', 'triggerDispPointAdditionSetup', 'after')) return true; - if(!$oModuleModel->getTrigger('document.updateReadedCount', 'point', 'controller', 'triggerUpdateReadedCount', 'after')) return true; - // Add a trigger for voting up and down 2008.05.13 haneul - if(!$oModuleModel->getTrigger('document.updateVotedCount', 'point', 'controller', 'triggerUpdateVotedCount', 'after')) return true; - // Add a trigger for using points for permanent saving of a temporarily saved document 2009.05.19 zero - if(!$oModuleModel->getTrigger('document.updateDocument', 'point', 'controller', 'triggerUpdateDocument', 'before')) return true; + return false; + } - // 2012. 08. 29 Add a trigger to copy additional setting when the module is copied - if(!$oModuleModel->getTrigger('module.procModuleAdminCopyModule', 'point', 'controller', 'triggerCopyModule', 'after')) return true; + /** + * @brief Execute update + */ + function moduleUpdate() + { + // Get the information of the point module + $oModuleModel = &getModel('module'); + $oModuleController = &getController('module'); + // Add a trigger for registration/insert document/insert comment/upload a file/download + if(!$oModuleModel->getTrigger('member.insertMember', 'point', 'controller', 'triggerInsertMember', 'after')) + $oModuleController->insertTrigger('member.insertMember', 'point', 'controller', 'triggerInsertMember', 'after'); + if(!$oModuleModel->getTrigger('document.insertDocument', 'point', 'controller', 'triggerInsertDocument', 'after')) + $oModuleController->insertTrigger('document.insertDocument', 'point', 'controller', 'triggerInsertDocument', 'after'); + if(!$oModuleModel->getTrigger('document.deleteDocument', 'point', 'controller', 'triggerBeforeDeleteDocument', 'before')) + $oModuleController->insertTrigger('document.deleteDocument', 'point', 'controller', 'triggerBeforeDeleteDocument', 'before'); + if(!$oModuleModel->getTrigger('document.deleteDocument', 'point', 'controller', 'triggerDeleteDocument', 'after')) + $oModuleController->insertTrigger('document.deleteDocument', 'point', 'controller', 'triggerDeleteDocument', 'after'); + if(!$oModuleModel->getTrigger('comment.insertComment', 'point', 'controller', 'triggerInsertComment', 'after')) + $oModuleController->insertTrigger('comment.insertComment', 'point', 'controller', 'triggerInsertComment', 'after'); + if(!$oModuleModel->getTrigger('comment.deleteComment', 'point', 'controller', 'triggerDeleteComment', 'after')) + $oModuleController->insertTrigger('comment.deleteComment', 'point', 'controller', 'triggerDeleteComment', 'after'); + if(!$oModuleModel->getTrigger('file.insertFile', 'point', 'controller', 'triggerInsertFile', 'after')) + $oModuleController->insertTrigger('file.insertFile', 'point', 'controller', 'triggerInsertFile', 'after'); + if(!$oModuleModel->getTrigger('file.deleteFile', 'point', 'controller', 'triggerDeleteFile', 'after')) + $oModuleController->insertTrigger('file.deleteFile', 'point', 'controller', 'triggerDeleteFile', 'after'); + if(!$oModuleModel->getTrigger('file.downloadFile', 'point', 'controller', 'triggerBeforeDownloadFile', 'before')) + $oModuleController->insertTrigger('file.downloadFile', 'point', 'controller', 'triggerBeforeDownloadFile', 'before'); + if(!$oModuleModel->getTrigger('file.downloadFile', 'point', 'controller', 'triggerDownloadFile', 'after')) + $oModuleController->insertTrigger('file.downloadFile', 'point', 'controller', 'triggerDownloadFile', 'after'); + if(!$oModuleModel->getTrigger('member.doLogin', 'point', 'controller', 'triggerAfterLogin', 'after')) + $oModuleController->insertTrigger('member.doLogin', 'point', 'controller', 'triggerAfterLogin', 'after'); + if(!$oModuleModel->getTrigger('module.dispAdditionSetup', 'point', 'view', 'triggerDispPointAdditionSetup', 'after')) + $oModuleController->insertTrigger('module.dispAdditionSetup', 'point', 'view', 'triggerDispPointAdditionSetup', 'after'); + if(!$oModuleModel->getTrigger('document.updateReadedCount', 'point', 'controller', 'triggerUpdateReadedCount', 'after')) + $oModuleController->insertTrigger('document.updateReadedCount', 'point', 'controller', 'triggerUpdateReadedCount', 'after'); + // Add a trigger for voting up and down 2008.05.13 haneul + if(!$oModuleModel->getTrigger('document.updateVotedCount', 'point', 'controller', 'triggerUpdateVotedCount', 'after')) + $oModuleController->insertTrigger('document.updateVotedCount', 'point', 'controller', 'triggerUpdateVotedCount', 'after'); + // Add a trigger for using points for permanent saving of a temporarily saved document 2009.05.19 zero + if(!$oModuleModel->getTrigger('document.updateDocument', 'point', 'controller', 'triggerUpdateDocument', 'before')) + $oModuleController->insertTrigger('document.updateDocument', 'point', 'controller', 'triggerUpdateDocument', 'before'); + // 2012. 08. 29 Add a trigger to copy additional setting when the module is copied + if(!$oModuleModel->getTrigger('module.procModuleAdminCopyModule', 'point', 'controller', 'triggerCopyModule', 'after')) + { + $oModuleController->insertTrigger('module.procModuleAdminCopyModule', 'point', 'controller', 'triggerCopyModule', 'after'); + } - return false; - } + return new Object(0, 'success_updated'); + } - /** - * @brief Execute update - **/ - function moduleUpdate() { - // Get the information of the point module - $oModuleModel = &getModel('module'); - $oModuleController = &getController('module'); - // Add a trigger for registration/insert document/insert comment/upload a file/download - if(!$oModuleModel->getTrigger('member.insertMember', 'point', 'controller', 'triggerInsertMember', 'after')) - $oModuleController->insertTrigger('member.insertMember', 'point', 'controller', 'triggerInsertMember', 'after'); - if(!$oModuleModel->getTrigger('document.insertDocument', 'point', 'controller', 'triggerInsertDocument', 'after')) - $oModuleController->insertTrigger('document.insertDocument', 'point', 'controller', 'triggerInsertDocument', 'after'); - if(!$oModuleModel->getTrigger('document.deleteDocument', 'point', 'controller', 'triggerBeforeDeleteDocument', 'before')) - $oModuleController->insertTrigger('document.deleteDocument', 'point', 'controller', 'triggerBeforeDeleteDocument', 'before'); - if(!$oModuleModel->getTrigger('document.deleteDocument', 'point', 'controller', 'triggerDeleteDocument', 'after')) - $oModuleController->insertTrigger('document.deleteDocument', 'point', 'controller', 'triggerDeleteDocument', 'after'); - if(!$oModuleModel->getTrigger('comment.insertComment', 'point', 'controller', 'triggerInsertComment', 'after')) - $oModuleController->insertTrigger('comment.insertComment', 'point', 'controller', 'triggerInsertComment', 'after'); - if(!$oModuleModel->getTrigger('comment.deleteComment', 'point', 'controller', 'triggerDeleteComment', 'after')) - $oModuleController->insertTrigger('comment.deleteComment', 'point', 'controller', 'triggerDeleteComment', 'after'); - if(!$oModuleModel->getTrigger('file.insertFile', 'point', 'controller', 'triggerInsertFile', 'after')) - $oModuleController->insertTrigger('file.insertFile', 'point', 'controller', 'triggerInsertFile', 'after'); - if(!$oModuleModel->getTrigger('file.deleteFile', 'point', 'controller', 'triggerDeleteFile', 'after')) - $oModuleController->insertTrigger('file.deleteFile', 'point', 'controller', 'triggerDeleteFile', 'after'); - if(!$oModuleModel->getTrigger('file.downloadFile', 'point', 'controller', 'triggerBeforeDownloadFile', 'before')) - $oModuleController->insertTrigger('file.downloadFile', 'point', 'controller', 'triggerBeforeDownloadFile', 'before'); - if(!$oModuleModel->getTrigger('file.downloadFile', 'point', 'controller', 'triggerDownloadFile', 'after')) - $oModuleController->insertTrigger('file.downloadFile', 'point', 'controller', 'triggerDownloadFile', 'after'); - if(!$oModuleModel->getTrigger('member.doLogin', 'point', 'controller', 'triggerAfterLogin', 'after')) - $oModuleController->insertTrigger('member.doLogin', 'point', 'controller', 'triggerAfterLogin', 'after'); - if(!$oModuleModel->getTrigger('module.dispAdditionSetup', 'point', 'view', 'triggerDispPointAdditionSetup', 'after')) - $oModuleController->insertTrigger('module.dispAdditionSetup', 'point', 'view', 'triggerDispPointAdditionSetup', 'after'); - if(!$oModuleModel->getTrigger('document.updateReadedCount', 'point', 'controller', 'triggerUpdateReadedCount', 'after')) - $oModuleController->insertTrigger('document.updateReadedCount', 'point', 'controller', 'triggerUpdateReadedCount', 'after'); - // Add a trigger for voting up and down 2008.05.13 haneul - if(!$oModuleModel->getTrigger('document.updateVotedCount', 'point', 'controller', 'triggerUpdateVotedCount', 'after')) - $oModuleController->insertTrigger('document.updateVotedCount', 'point', 'controller', 'triggerUpdateVotedCount', 'after'); - // Add a trigger for using points for permanent saving of a temporarily saved document 2009.05.19 zero - if(!$oModuleModel->getTrigger('document.updateDocument', 'point', 'controller', 'triggerUpdateDocument', 'before')) - $oModuleController->insertTrigger('document.updateDocument', 'point', 'controller', 'triggerUpdateDocument', 'before'); - // 2012. 08. 29 Add a trigger to copy additional setting when the module is copied - if(!$oModuleModel->getTrigger('module.procModuleAdminCopyModule', 'point', 'controller', 'triggerCopyModule', 'after')) - { - $oModuleController->insertTrigger('module.procModuleAdminCopyModule', 'point', 'controller', 'triggerCopyModule', 'after'); - } - - return new Object(0, 'success_updated'); - } - - /** - * @brief Re-create the cache file - **/ - function recompileCache() { - // redefine point action file - $oPointAdminController = &getAdminController('point'); - $oPointAdminController->cacheActList(); - - } - } -?> + /** + * @brief Re-create the cache file + */ + function recompileCache() + { + // redefine point action file + $oPointAdminController = &getAdminController('point'); + $oPointAdminController->cacheActList(); + } +} +/* End of file point.class.php */ +/* Location: ./modules/point/point.class.php */ diff --git a/modules/point/point.controller.php b/modules/point/point.controller.php index b140484e1..efad90345 100644 --- a/modules/point/point.controller.php +++ b/modules/point/point.controller.php @@ -1,600 +1,637 @@ getModuleConfig('point'); + // Get the member_srl of the newly registered member + $member_srl = $obj->member_srl; + // Get the points of the member + $oPointModel = &getModel('point'); + $cur_point = $oPointModel->getPoint($member_srl, true); - /** - * @brief Initialization - **/ - function init() { - } + $point = $config->signup_point; + // Increase the point + $cur_point += $point; + $this->setPoint($member_srl,$cur_point, 'signup'); - /** - * @brief Membership point application trigger - **/ - function triggerInsertMember(&$obj) { - // Get the point module information - $oModuleModel = &getModel('module'); - $config = $oModuleModel->getModuleConfig('point'); - // Get the member_srl of the newly registered member - $member_srl = $obj->member_srl; - // Get the points of the member - $oPointModel = &getModel('point'); - $cur_point = $oPointModel->getPoint($member_srl, true); + return new Object(); + } - $point = $config->signup_point; - // Increase the point - $cur_point += $point; - $this->setPoint($member_srl,$cur_point, 'signup'); + /** + * @brief A trigger to add points to the member for login + */ + function triggerAfterLogin(&$obj) + { + $member_srl = $obj->member_srl; + if(!$member_srl) return new Object(); + // If the last login is not today, give the points + if(substr($obj->last_login,0,8)==date("Ymd")) return new Object(); + // Get the point module information + $oModuleModel = &getModel('module'); + $config = $oModuleModel->getModuleConfig('point'); + // Get the points of the member + $oPointModel = &getModel('point'); + $cur_point = $oPointModel->getPoint($member_srl, true); - return new Object(); - } + $point = $config->login_point; + // Increase the point + $cur_point += $point; + $this->setPoint($member_srl,$cur_point); - /** - * @brief A trigger to add points to the member for login - **/ - function triggerAfterLogin(&$obj) { - $member_srl = $obj->member_srl; - if(!$member_srl) return new Object(); - // If the last login is not today, give the points - if(substr($obj->last_login,0,8)==date("Ymd")) return new Object(); - // Get the point module information - $oModuleModel = &getModel('module'); - $config = $oModuleModel->getModuleConfig('point'); - // Get the points of the member - $oPointModel = &getModel('point'); - $cur_point = $oPointModel->getPoint($member_srl, true); + return new Object(); + } - $point = $config->login_point; - // Increase the point - $cur_point += $point; - $this->setPoint($member_srl,$cur_point); + /** + * @brief A trigger to add points to the member for creating a post + */ + function triggerInsertDocument(&$obj) + { + $oDocumentModel = &getModel('document'); + if($obj->status != $oDocumentModel->getConfigStatus('temp')) + { + $module_srl = $obj->module_srl; + $member_srl = $obj->member_srl; + if(!$module_srl || !$member_srl) return new Object(); + // The fix to disable giving points for saving the document temporarily + if($module_srl == $member_srl) return new Object(); + // Get the point module information + $oModuleModel = &getModel('module'); + $config = $oModuleModel->getModuleConfig('point'); + $module_config = $oModuleModel->getModulePartConfig('point',$module_srl); + // Get the points of the member + $oPointModel = &getModel('point'); + $cur_point = $oPointModel->getPoint($member_srl, true); - return new Object(); - } + $point = $module_config['insert_document']; + if(!isset($point)) $point = $config->insert_document; + $cur_point += $point; + // Add points for attaching a file + $point = $module_config['upload_file']; + if(!isset($point)) $point = $config->upload_file; + if($obj->uploaded_count) $cur_point += $point * $obj->uploaded_count; + // Increase the point + $this->setPoint($member_srl,$cur_point); + } - /** - * @brief A trigger to add points to the member for creating a post - **/ - function triggerInsertDocument(&$obj) { - $oDocumentModel = &getModel('document'); - if($obj->status != $oDocumentModel->getConfigStatus('temp')) - { - $module_srl = $obj->module_srl; - $member_srl = $obj->member_srl; - if(!$module_srl || !$member_srl) return new Object(); - // The fix to disable giving points for saving the document temporarily - if($module_srl == $member_srl) return new Object(); - // Get the point module information - $oModuleModel = &getModel('module'); - $config = $oModuleModel->getModuleConfig('point'); - $module_config = $oModuleModel->getModulePartConfig('point',$module_srl); - // Get the points of the member - $oPointModel = &getModel('point'); - $cur_point = $oPointModel->getPoint($member_srl, true); + return new Object(); + } - $point = $module_config['insert_document']; - if(!isset($point)) $point = $config->insert_document; - $cur_point += $point; - // Add points for attaching a file - $point = $module_config['upload_file']; - if(!isset($point)) $point = $config->upload_file; - if($obj->uploaded_count) $cur_point += $point * $obj->uploaded_count; - // Increase the point - $this->setPoint($member_srl,$cur_point); - } + /** + * @brief The trigger to give points for normal saving the temporarily saved document + * Temporary storage at the point in 1.2.3 changed to avoid payment + */ + function triggerUpdateDocument(&$obj) + { + $oDocumentModel = &getModel('document'); + $document_srl = $obj->document_srl; + $oDocument = $oDocumentModel->getDocument($document_srl); - return new Object(); - } - - /** - * @brief The trigger to give points for normal saving the temporarily saved document - * Temporary storage at the point in 1.2.3 changed to avoid payment - **/ - function triggerUpdateDocument(&$obj) { - $oDocumentModel = &getModel('document'); - $document_srl = $obj->document_srl; - $oDocument = $oDocumentModel->getDocument($document_srl); - - // if status is TEMP or PUBLIC... give not point, only status is empty - if($oDocument->get('status') == $oDocumentModel->getConfigStatus('temp') && $obj->status != $oDocumentModel->getConfigStatus('temp')) - { - $oModuleModel = &getModel('module'); - - // Get the point module information - $config = $oModuleModel->getModuleConfig('point'); - $module_config = $oModuleModel->getModulePartConfig('point',$obj->module_srl); - // Get the points of the member - $oPointModel = &getModel('point'); - $cur_point = $oPointModel->getPoint($oDocument->get('member_srl'), true); - - $point = $module_config['insert_document']; - if(!isset($point)) $point = $config->insert_document; - $cur_point += $point; - // Add points for attaching a file - $point = $module_config['upload_file']; - if(!isset($point)) $point = $config->upload_file; - if($obj->uploaded_count) $cur_point += $point * $obj->uploaded_count; - // Increase the point - $this->setPoint($oDocument->get('member_srl'), $cur_point); - } - - return new Object(); - - } - - /** - * @brief The trigger which deducts the points related to post comments before deleting the post itself - **/ - function triggerBeforeDeleteDocument(&$obj) { - $document_srl = $obj->document_srl; - $member_srl = $obj->member_srl; - - $oDocumentModel = &getModel('document'); - $oDocument = $oDocumentModel->getDocument($document_srl); - if(!$oDocument->isExists()) return new Object(); - // Get the point module information - $oModuleModel = &getModel('module'); - $config = $oModuleModel->getModuleConfig('point'); - $module_config = $oModuleModel->getModulePartConfig('point',$oDocument->get('module_srl')); - // The process related to clearing the post comments - $comment_point = $module_config['insert_comment']; - if(!isset($comment_point)) $comment_point = $config->insert_comment; - // If there are comment points, attempt to deduct - if($comment_point>0) return new Object(); - // Get all the comments related to this post - $cp_args->document_srl = $document_srl; - $output = executeQueryArray('point.getCommentUsers', $cp_args); - // Return if there is no object - if(!$output->data) return new Object(); - // Organize the member number - $member_srls = array(); - $cnt = count($output->data); - for($i=0;$i<$cnt;$i++) { - if($output->data[$i]->member_srl<1) continue; - $member_srls[abs($output->data[$i]->member_srl)] = $output->data[$i]->count; - } - // Remove the member number who has written the original post - if($member_srl) unset($member_srls[abs($member_srl)]); - if(!count($member_srls)) return new Object(); - // Remove all the points for each member - $oPointModel = &getModel('point'); - // Get the points - $point = $module_config['download_file']; - foreach($member_srls as $member_srl => $cnt) { - $cur_point = $oPointModel->getPoint($member_srl, true); - $cur_point -= $cnt * $comment_point; - $this->setPoint($member_srl,$cur_point); - } - - return new Object(); - } - - /** - * @brief A trigger to give points for deleting the post - **/ - function triggerDeleteDocument(&$obj) { - $module_srl = $obj->module_srl; - $member_srl = $obj->member_srl; - // The process related to clearing the post object - if(!$module_srl || !$member_srl) return new Object(); - // Run only when logged in - $logged_info = Context::get('logged_info'); - if(!$logged_info->member_srl) return new Object(); - // Get the points of the member - $oPointModel = &getModel('point'); - $cur_point = $oPointModel->getPoint($member_srl, true); - // Get the point module information - $oModuleModel = &getModel('module'); - $config = $oModuleModel->getModuleConfig('point'); - $module_config = $oModuleModel->getModulePartConfig('point', $module_srl); - - $point = $module_config['insert_document']; - if(!isset($point)) $point = $config->insert_document; - // if the point is set to decrease when writing a document, make sure it does not increase the points when deleting an article - if($point < 0) return new Object(); - $cur_point -= $point; - // Add points related to deleting an attachment - $point = $module_config['upload_file']; - if(!isset($point)) $point = $config->upload_file; - if($obj->uploaded_count) $cur_point -= $point * $obj->uploaded_count; - // Increase the point - $this->setPoint($member_srl,$cur_point); - - return new Object(); - } - - /** - * @brief A trigger which gives points for entering a comment - **/ - function triggerInsertComment(&$obj) { - $module_srl = $obj->module_srl; - $member_srl = $obj->member_srl; - if(!$module_srl || !$member_srl) return new Object(); - // Do not increase the points if the member is the author of the post - $document_srl = $obj->document_srl; - $oDocumentModel = &getModel('document'); - $oDocument = $oDocumentModel->getDocument($document_srl); - if(!$oDocument->isExists() || abs($oDocument->get('member_srl'))==abs($member_srl)) return new Object(); - // Get the point module information - $oModuleModel = &getModel('module'); - $config = $oModuleModel->getModuleConfig('point'); - $module_config = $oModuleModel->getModulePartConfig('point', $module_srl); - // Get the points of the member - $oPointModel = &getModel('point'); - $cur_point = $oPointModel->getPoint($member_srl, true); - - $point = $module_config['insert_comment']; - if(!isset($point)) $point = $config->insert_comment; - // Increase the point - $cur_point += $point; - $this->setPoint($member_srl,$cur_point); - - return new Object(); - } - - /** - * @brief A trigger which gives points for deleting a comment - **/ - function triggerDeleteComment(&$obj) { - $oModuleModel = &getModel('module'); - $oPointModel = &getModel('point'); - $oDocumentModel = &getModel('document'); - - $module_srl = $obj->module_srl; - $member_srl = abs($obj->member_srl); - $document_srl = $obj->document_srl; - if(!$module_srl || !$member_srl) return new Object(); - // Get the original article (if the original article is missing or if the member is its author, do not apply the points) - $oDocument = $oDocumentModel->getDocument($document_srl); - if(!$oDocument->isExists()) return new Object(); - if($oDocument->get('member_srl')==$member_srl) return new Object(); - // Get the point module information - $config = $oModuleModel->getModuleConfig('point'); - $module_config = $oModuleModel->getModulePartConfig('point', $module_srl); - // Get the points of the member - $cur_point = $oPointModel->getPoint($member_srl, true); - - $point = $module_config['insert_comment']; - if(!isset($point)) $point = $config->insert_comment; - // if the point is set to decrease when writing a comment, make sure it does not increase the points when deleting a comment - if($point < 0) return new Object(); - // Increase the point - $cur_point -= $point; - $this->setPoint($member_srl,$cur_point); - - return new Object(); - } - - /** - * @brief Add the file registration trigger - * To prevent taking points for invalid file registration this method wlil return a null object - **/ - function triggerInsertFile(&$obj) { - return new Object(); - } - - /** - * @brief A trigger to give points for deleting a file - * Remove points only in case an invalid file is being deleted - **/ - function triggerDeleteFile(&$obj) { - if($obj->isvalid != 'Y') return new Object(); - - $module_srl = $obj->module_srl; - $member_srl = $obj->member_srl; - if(!$module_srl || !$member_srl) return new Object(); - // Get the point module information - $oModuleModel = &getModel('module'); - $config = $oModuleModel->getModuleConfig('point'); - $module_config = $oModuleModel->getModulePartConfig('point', $module_srl); - // Get the points of the member - $oPointModel = &getModel('point'); - $cur_point = $oPointModel->getPoint($member_srl, true); - - $point = $module_config['upload_file']; - if(!isset($point)) $point = $config->upload_file; - // Increase the point - $cur_point -= $point; - $this->setPoint($member_srl,$cur_point); - - return new Object(); - } - - /** - * @brief The trigger called before a file is downloaded - **/ - function triggerBeforeDownloadFile(&$obj) { - $logged_info = Context::get('logged_info'); - $member_srl = $logged_info->member_srl; - $module_srl = $obj->module_srl; - if(!$module_srl) return new Object(); - // Pass if it is your file - if(abs($obj->member_srl) == abs($member_srl)) return new Object(); - - $oModuleModel = &getModel('module'); - $config = $oModuleModel->getModuleConfig('point'); - $module_config = $oModuleModel->getModulePartConfig('point', $module_srl); - // If it is set not to allow downloading for non-logged in users, do not permit - if(!Context::get('is_logged')) - { - if($config->disable_download == 'Y' && isset($module_config['download_file'])) return new Object(-1,'msg_not_permitted_download'); - else return new Object(); - } - // Get the points of the member - $oPointModel = &getModel('point'); - $cur_point = $oPointModel->getPoint($member_srl, true); - // Get the points - $point = $module_config['download_file']; - if(!isset($point)) $point = $config->download_file; - // If points are less than 0, and if downloading a file is not allowed in this case, give an errors - if($cur_point + $point < 0 && $config->disable_download == 'Y') return new Object(-1,'msg_cannot_download'); - - return new Object(); - } - - /** - * @brief The trigger to give points for downloading the file - **/ - function triggerDownloadFile(&$obj) { - // Run only when logged in - $logged_info = Context::get('logged_info'); - if(!$logged_info->member_srl) return new Object(); - $module_srl = $obj->module_srl; - $member_srl = $logged_info->member_srl; - if(!$module_srl) return new Object(); - // Pass if it is your file - if(abs($obj->member_srl) == abs($member_srl)) return new Object(); - // Get the point module information - $oModuleModel = &getModel('module'); - $config = $oModuleModel->getModuleConfig('point'); - $module_config = $oModuleModel->getModulePartConfig('point', $module_srl); - // Get the points of the member - $oPointModel = &getModel('point'); - $cur_point = $oPointModel->getPoint($member_srl, true); - // Get the points - $point = $module_config['download_file']; - if(!isset($point)) $point = $config->download_file; - // Increase the point - $cur_point += $point; - $this->setPoint($member_srl,$cur_point); - - return new Object(); - } - - /** - * @brief Give points for hits increase - * Run it even if there are no points - **/ - function triggerUpdateReadedCount(&$obj) { - $oModuleModel = &getModel('module'); - $oPointModel = &getModel('point'); - // Get visitor information - $logged_info = Context::get('logged_info'); - $member_srl = $logged_info->member_srl; - // Get the original author number - $target_member_srl = abs($obj->get('member_srl')); - // Pass without increasing the hits if the viewer is the same as the author - if($target_member_srl == $member_srl) return new Object(); - // Get the point information for each module - $config = $oModuleModel->getModuleConfig('point'); - $module_config = $oModuleModel->getModulePartConfig('point', $obj->get('module_srl')); - // Get hits points - $point = $module_config['read_document']; - if(!isset($point)) $point = $config->read_document; - // Pass if there are no requested points - if(!$point) return new Object(); - // In case of a registered member, if it is read but cannot just pass, then get the current points - if($member_srl) { - $args->member_srl = $member_srl; - $args->document_srl = $obj->document_srl; - $output = executeQuery('document.getDocumentReadedLogInfo', $args); - if($output->data->count) return new Object(); - $cur_point = $oPointModel->getPoint($member_srl, true); - } else { - $cur_point = 0; - } - // Get the defaul configurations of the Point Module - $config = $oModuleModel->getModuleConfig('point'); - // When the requested points are negative, compared it with the current point - if($config->disable_read_document == 'Y' && $point < 0 && abs($point)>$cur_point) { - $obj->add('content', sprintf(Context::getLang('msg_disallow_by_point'), abs($point), $cur_point)); - return new Object(); - } - // If not logged in, pass - if(!$logged_info->member_srl) return new Object(); - // Pass, if there are no requested points - if(!$point) return new Object(); - // If the read record is missing, leave it - $output = executeQuery('document.insertDocumentReadedLog', $args); - // Increase the point - $cur_point += $point; - $this->setPoint($member_srl,$cur_point); - - return new Object(); - } - - /** - * @brief Points for voting up or down - **/ - - function triggerUpdateVotedCount(&$obj) { - $module_srl = $obj->module_srl; - $member_srl = $obj->member_srl; - if(!$module_srl || !$member_srl) return new Object(); - - $oModuleModel = &getModel('module'); - $config = $oModuleModel->getModuleConfig('point'); - $module_config = $oModuleModel->getModulePartConfig('point', $module_srl); - - $oPointModel = &getModel('point'); - $cur_point = $oPointModel->getPoint($member_srl, true); - - if( $obj->point > 0 ) { - $point = $module_config['voted']; - if(!isset($point)) $point = $config->voted; - } else { - $point = $module_config['blamed']; - if(!isset($point)) $point = $config->blamed; - } - - if(!$point) return new Object(); - // Increase the point - $cur_point += $point; - $this->setPoint($member_srl,$cur_point); - - return new Object(); - } - - /** - * @brief Set points - **/ - function setPoint($member_srl, $point, $mode = null) { - $member_srl = abs($member_srl); - $mode_arr = array('add', 'minus', 'update', 'signup'); - if(!$mode || !in_array($mode,$mode_arr)) $mode = 'update'; - // Get configuration information - $oMemberModel = &getModel('member'); - $oModuleModel = &getModel('module'); - $oPointModel = &getModel('point'); - $config = $oModuleModel->getModuleConfig('point'); - // Get the default configuration information - $prev_point = $oPointModel->getPoint($member_srl, true); - $prev_level = $oPointModel->getLevel($prev_point, $config->level_step); - // Change points - $args->member_srl = $member_srl; - $args->point = $prev_point; - - switch($mode) { - - case 'add' : - $args->point += $point; - break; - case 'minus' : - $args->point -= $point; - break; - case 'update' : - $args->point = $point; - break; - case 'signup' : - $args->point = $point; - break; - } - if($args->point < 0) $args->point = 0; - $point = $args->point; - // If there are points, update, if no, insert - $oPointModel = &getModel('point'); - if($oPointModel->isExistsPoint($member_srl)) executeQuery("point.updatePoint", $args); - else executeQuery("point.insertPoint", $args); - // Get a new level - $level = $oPointModel->getLevel($point, $config->level_step); - // If existing level and a new one are different attempt to set a point group - if($level != $prev_level) { - // Check if the level, for which the current points are prepared, is calculate and set the correct group - $point_group = $config->point_group; - // If the point group exists - if($point_group && is_array($point_group) && count($point_group) ) { - // Get the default group - $default_group = $oMemberModel->getDefaultGroup(); - // Get the removed group and the newly granted group - $del_group_list = array(); - $new_group_srls = array(); - - asort($point_group); - // Reset group after initialization - if($config->group_reset != 'N') { - // If the new level is in the right group - if(in_array($level, $point_group)) { - // Delete all groups except the one which the current level belongs to - foreach($point_group as $group_srl => $target_level) { - $del_group_list[] = $group_srl; - if($target_level == $level) $new_group_srls[] = $group_srl; - } - } - // Otherwise, in case the level is reduced, add the recent group - else { - $i = $level; - while($i > 0) { - if(in_array($i, $point_group)) { - foreach($point_group as $group_srl => $target_level) { - if ($target_level == $i) { - $new_group_srls[] = $group_srl; - } - } - $i = 0; - } - - $i--; - } - } - // Delete the group of a level which is higher than the current level - foreach($point_group as $group_srl => $target_level) { - if($target_level > $level) $del_group_list[] = $group_srl; - } - $del_group_list[] = $default_group->group_srl; - } - // Grant a new group - else { - // Check until the current level by rotating setting the configurations of the point groups - foreach($point_group as $group_srl => $target_level) { - $del_group_list[] = $group_srl; - if($target_level <= $level) $new_group_srls[] = $group_srl; - } - } - // If there is no a new group, granted the default group - if(!$new_group_srls[0]) $new_group_srls[0] = $default_group->group_srl; - // Remove linkage group - if($del_group_list && count($del_group_list)) { - $del_group_args->member_srl = $member_srl; - $del_group_args->group_srl = implode(',', $del_group_list); - $del_group_output = executeQuery('point.deleteMemberGroup', $del_group_args); - } - // Grant a new group - foreach($new_group_srls as $group_srl) { - $new_group_args->member_srl = $member_srl; - $new_group_args->group_srl = $group_srl; - executeQuery('member.addMemberToGroup', $new_group_args); - } - } - } - // Cache Settings - $cache_path = sprintf('./files/member_extra_info/point/%s/', getNumberingPath($member_srl)); - FileHandler::makedir($cache_path); - - $cache_filename = sprintf('%s%d.cache.txt', $cache_path, $member_srl); - FileHandler::writeFile($cache_filename, $point); - - $oCacheHandler = &CacheHandler::getInstance('object'); - if($oCacheHandler->isSupport()) - { - $cache_key = 'object:'.$member_srl; - $GLOBALS['__member_info__'][$member_srl] = null; - $oCacheHandler->delete($cache_key); - - $gcache_key = 'object_member_groups:'.$member_srl.'_0'; - $oCacheHandler->delete($gcache_key); - } - - return $output; - } - - function triggerCopyModule(&$obj) + // if status is TEMP or PUBLIC... give not point, only status is empty + if($oDocument->get('status') == $oDocumentModel->getConfigStatus('temp') && $obj->status != $oDocumentModel->getConfigStatus('temp')) { $oModuleModel = &getModel('module'); - $pointConfig = $oModuleModel->getModulePartConfig('point', $obj->originModuleSrl); - $oModuleController = &getController('module'); - if(is_array($obj->moduleSrlList)) + // Get the point module information + $config = $oModuleModel->getModuleConfig('point'); + $module_config = $oModuleModel->getModulePartConfig('point',$obj->module_srl); + // Get the points of the member + $oPointModel = &getModel('point'); + $cur_point = $oPointModel->getPoint($oDocument->get('member_srl'), true); + + $point = $module_config['insert_document']; + if(!isset($point)) $point = $config->insert_document; + $cur_point += $point; + // Add points for attaching a file + $point = $module_config['upload_file']; + if(!isset($point)) $point = $config->upload_file; + if($obj->uploaded_count) $cur_point += $point * $obj->uploaded_count; + // Increase the point + $this->setPoint($oDocument->get('member_srl'), $cur_point); + } + + return new Object(); + } + + /** + * @brief The trigger which deducts the points related to post comments before deleting the post itself + */ + function triggerBeforeDeleteDocument(&$obj) + { + $document_srl = $obj->document_srl; + $member_srl = $obj->member_srl; + + $oDocumentModel = &getModel('document'); + $oDocument = $oDocumentModel->getDocument($document_srl); + if(!$oDocument->isExists()) return new Object(); + // Get the point module information + $oModuleModel = &getModel('module'); + $config = $oModuleModel->getModuleConfig('point'); + $module_config = $oModuleModel->getModulePartConfig('point',$oDocument->get('module_srl')); + // The process related to clearing the post comments + $comment_point = $module_config['insert_comment']; + if(!isset($comment_point)) $comment_point = $config->insert_comment; + // If there are comment points, attempt to deduct + if($comment_point>0) return new Object(); + // Get all the comments related to this post + $cp_args->document_srl = $document_srl; + $output = executeQueryArray('point.getCommentUsers', $cp_args); + // Return if there is no object + if(!$output->data) return new Object(); + // Organize the member number + $member_srls = array(); + $cnt = count($output->data); + for($i=0;$i<$cnt;$i++) + { + if($output->data[$i]->member_srl<1) continue; + $member_srls[abs($output->data[$i]->member_srl)] = $output->data[$i]->count; + } + // Remove the member number who has written the original post + if($member_srl) unset($member_srls[abs($member_srl)]); + if(!count($member_srls)) return new Object(); + // Remove all the points for each member + $oPointModel = &getModel('point'); + // Get the points + $point = $module_config['download_file']; + foreach($member_srls as $member_srl => $cnt) + { + $cur_point = $oPointModel->getPoint($member_srl, true); + $cur_point -= $cnt * $comment_point; + $this->setPoint($member_srl,$cur_point); + } + + return new Object(); + } + + /** + * @brief A trigger to give points for deleting the post + */ + function triggerDeleteDocument(&$obj) + { + $module_srl = $obj->module_srl; + $member_srl = $obj->member_srl; + // The process related to clearing the post object + if(!$module_srl || !$member_srl) return new Object(); + // Run only when logged in + $logged_info = Context::get('logged_info'); + if(!$logged_info->member_srl) return new Object(); + // Get the points of the member + $oPointModel = &getModel('point'); + $cur_point = $oPointModel->getPoint($member_srl, true); + // Get the point module information + $oModuleModel = &getModel('module'); + $config = $oModuleModel->getModuleConfig('point'); + $module_config = $oModuleModel->getModulePartConfig('point', $module_srl); + + $point = $module_config['insert_document']; + if(!isset($point)) $point = $config->insert_document; + // if the point is set to decrease when writing a document, make sure it does not increase the points when deleting an article + if($point < 0) return new Object(); + $cur_point -= $point; + // Add points related to deleting an attachment + $point = $module_config['upload_file']; + if(!isset($point)) $point = $config->upload_file; + if($obj->uploaded_count) $cur_point -= $point * $obj->uploaded_count; + // Increase the point + $this->setPoint($member_srl,$cur_point); + + return new Object(); + } + + /** + * @brief A trigger which gives points for entering a comment + */ + function triggerInsertComment(&$obj) + { + $module_srl = $obj->module_srl; + $member_srl = $obj->member_srl; + if(!$module_srl || !$member_srl) return new Object(); + // Do not increase the points if the member is the author of the post + $document_srl = $obj->document_srl; + $oDocumentModel = &getModel('document'); + $oDocument = $oDocumentModel->getDocument($document_srl); + if(!$oDocument->isExists() || abs($oDocument->get('member_srl'))==abs($member_srl)) return new Object(); + // Get the point module information + $oModuleModel = &getModel('module'); + $config = $oModuleModel->getModuleConfig('point'); + $module_config = $oModuleModel->getModulePartConfig('point', $module_srl); + // Get the points of the member + $oPointModel = &getModel('point'); + $cur_point = $oPointModel->getPoint($member_srl, true); + + $point = $module_config['insert_comment']; + if(!isset($point)) $point = $config->insert_comment; + // Increase the point + $cur_point += $point; + $this->setPoint($member_srl,$cur_point); + + return new Object(); + } + + /** + * @brief A trigger which gives points for deleting a comment + */ + function triggerDeleteComment(&$obj) + { + $oModuleModel = &getModel('module'); + $oPointModel = &getModel('point'); + $oDocumentModel = &getModel('document'); + + $module_srl = $obj->module_srl; + $member_srl = abs($obj->member_srl); + $document_srl = $obj->document_srl; + if(!$module_srl || !$member_srl) return new Object(); + // Get the original article (if the original article is missing or if the member is its author, do not apply the points) + $oDocument = $oDocumentModel->getDocument($document_srl); + if(!$oDocument->isExists()) return new Object(); + if($oDocument->get('member_srl')==$member_srl) return new Object(); + // Get the point module information + $config = $oModuleModel->getModuleConfig('point'); + $module_config = $oModuleModel->getModulePartConfig('point', $module_srl); + // Get the points of the member + $cur_point = $oPointModel->getPoint($member_srl, true); + + $point = $module_config['insert_comment']; + if(!isset($point)) $point = $config->insert_comment; + // if the point is set to decrease when writing a comment, make sure it does not increase the points when deleting a comment + if($point < 0) return new Object(); + // Increase the point + $cur_point -= $point; + $this->setPoint($member_srl,$cur_point); + + return new Object(); + } + + /** + * @brief Add the file registration trigger + * To prevent taking points for invalid file registration this method wlil return a null object + */ + function triggerInsertFile(&$obj) + { + return new Object(); + } + + /** + * @brief A trigger to give points for deleting a file + * Remove points only in case an invalid file is being deleted + */ + function triggerDeleteFile(&$obj) + { + if($obj->isvalid != 'Y') return new Object(); + + $module_srl = $obj->module_srl; + $member_srl = $obj->member_srl; + if(!$module_srl || !$member_srl) return new Object(); + // Get the point module information + $oModuleModel = &getModel('module'); + $config = $oModuleModel->getModuleConfig('point'); + $module_config = $oModuleModel->getModulePartConfig('point', $module_srl); + // Get the points of the member + $oPointModel = &getModel('point'); + $cur_point = $oPointModel->getPoint($member_srl, true); + + $point = $module_config['upload_file']; + if(!isset($point)) $point = $config->upload_file; + // Increase the point + $cur_point -= $point; + $this->setPoint($member_srl,$cur_point); + + return new Object(); + } + + /** + * @brief The trigger called before a file is downloaded + */ + function triggerBeforeDownloadFile(&$obj) + { + $logged_info = Context::get('logged_info'); + $member_srl = $logged_info->member_srl; + $module_srl = $obj->module_srl; + if(!$module_srl) return new Object(); + // Pass if it is your file + if(abs($obj->member_srl) == abs($member_srl)) return new Object(); + + $oModuleModel = &getModel('module'); + $config = $oModuleModel->getModuleConfig('point'); + $module_config = $oModuleModel->getModulePartConfig('point', $module_srl); + // If it is set not to allow downloading for non-logged in users, do not permit + if(!Context::get('is_logged')) + { + if($config->disable_download == 'Y' && isset($module_config['download_file'])) return new Object(-1,'msg_not_permitted_download'); + else return new Object(); + } + // Get the points of the member + $oPointModel = &getModel('point'); + $cur_point = $oPointModel->getPoint($member_srl, true); + // Get the points + $point = $module_config['download_file']; + if(!isset($point)) $point = $config->download_file; + // If points are less than 0, and if downloading a file is not allowed in this case, give an errors + if($cur_point + $point < 0 && $config->disable_download == 'Y') return new Object(-1,'msg_cannot_download'); + + return new Object(); + } + + /** + * @brief The trigger to give points for downloading the file + */ + function triggerDownloadFile(&$obj) + { + // Run only when logged in + $logged_info = Context::get('logged_info'); + if(!$logged_info->member_srl) return new Object(); + $module_srl = $obj->module_srl; + $member_srl = $logged_info->member_srl; + if(!$module_srl) return new Object(); + // Pass if it is your file + if(abs($obj->member_srl) == abs($member_srl)) return new Object(); + // Get the point module information + $oModuleModel = &getModel('module'); + $config = $oModuleModel->getModuleConfig('point'); + $module_config = $oModuleModel->getModulePartConfig('point', $module_srl); + // Get the points of the member + $oPointModel = &getModel('point'); + $cur_point = $oPointModel->getPoint($member_srl, true); + // Get the points + $point = $module_config['download_file']; + if(!isset($point)) $point = $config->download_file; + // Increase the point + $cur_point += $point; + $this->setPoint($member_srl,$cur_point); + + return new Object(); + } + + /** + * @brief Give points for hits increase + * Run it even if there are no points + */ + function triggerUpdateReadedCount(&$obj) + { + $oModuleModel = &getModel('module'); + $oPointModel = &getModel('point'); + // Get visitor information + $logged_info = Context::get('logged_info'); + $member_srl = $logged_info->member_srl; + // Get the original author number + $target_member_srl = abs($obj->get('member_srl')); + // Pass without increasing the hits if the viewer is the same as the author + if($target_member_srl == $member_srl) return new Object(); + // Get the point information for each module + $config = $oModuleModel->getModuleConfig('point'); + $module_config = $oModuleModel->getModulePartConfig('point', $obj->get('module_srl')); + // Get hits points + $point = $module_config['read_document']; + if(!isset($point)) $point = $config->read_document; + // Pass if there are no requested points + if(!$point) return new Object(); + // In case of a registered member, if it is read but cannot just pass, then get the current points + if($member_srl) + { + $args->member_srl = $member_srl; + $args->document_srl = $obj->document_srl; + $output = executeQuery('document.getDocumentReadedLogInfo', $args); + if($output->data->count) return new Object(); + $cur_point = $oPointModel->getPoint($member_srl, true); + } + else + { + $cur_point = 0; + } + // Get the defaul configurations of the Point Module + $config = $oModuleModel->getModuleConfig('point'); + // When the requested points are negative, compared it with the current point + if($config->disable_read_document == 'Y' && $point < 0 && abs($point)>$cur_point) + { + $obj->add('content', sprintf(Context::getLang('msg_disallow_by_point'), abs($point), $cur_point)); + return new Object(); + } + // If not logged in, pass + if(!$logged_info->member_srl) return new Object(); + // Pass, if there are no requested points + if(!$point) return new Object(); + // If the read record is missing, leave it + $output = executeQuery('document.insertDocumentReadedLog', $args); + // Increase the point + $cur_point += $point; + $this->setPoint($member_srl,$cur_point); + + return new Object(); + } + + /** + * @brief Points for voting up or down + */ + function triggerUpdateVotedCount(&$obj) + { + $module_srl = $obj->module_srl; + $member_srl = $obj->member_srl; + if(!$module_srl || !$member_srl) return new Object(); + + $oModuleModel = &getModel('module'); + $config = $oModuleModel->getModuleConfig('point'); + $module_config = $oModuleModel->getModulePartConfig('point', $module_srl); + + $oPointModel = &getModel('point'); + $cur_point = $oPointModel->getPoint($member_srl, true); + + if( $obj->point > 0 ) + { + $point = $module_config['voted']; + if(!isset($point)) $point = $config->voted; + } + else + { + $point = $module_config['blamed']; + if(!isset($point)) $point = $config->blamed; + } + + if(!$point) return new Object(); + // Increase the point + $cur_point += $point; + $this->setPoint($member_srl,$cur_point); + + return new Object(); + } + + /** + * @brief Set points + */ + function setPoint($member_srl, $point, $mode = null) + { + $member_srl = abs($member_srl); + $mode_arr = array('add', 'minus', 'update', 'signup'); + if(!$mode || !in_array($mode,$mode_arr)) $mode = 'update'; + // Get configuration information + $oMemberModel = &getModel('member'); + $oModuleModel = &getModel('module'); + $oPointModel = &getModel('point'); + $config = $oModuleModel->getModuleConfig('point'); + // Get the default configuration information + $prev_point = $oPointModel->getPoint($member_srl, true); + $prev_level = $oPointModel->getLevel($prev_point, $config->level_step); + // Change points + $args->member_srl = $member_srl; + $args->point = $prev_point; + + switch($mode) + { + case 'add' : + $args->point += $point; + break; + case 'minus' : + $args->point -= $point; + break; + case 'update' : + $args->point = $point; + break; + case 'signup' : + $args->point = $point; + break; + } + if($args->point < 0) $args->point = 0; + $point = $args->point; + // If there are points, update, if no, insert + $oPointModel = &getModel('point'); + if($oPointModel->isExistsPoint($member_srl)) executeQuery("point.updatePoint", $args); + else executeQuery("point.insertPoint", $args); + // Get a new level + $level = $oPointModel->getLevel($point, $config->level_step); + // If existing level and a new one are different attempt to set a point group + if($level != $prev_level) + { + // Check if the level, for which the current points are prepared, is calculate and set the correct group + $point_group = $config->point_group; + // If the point group exists + if($point_group && is_array($point_group) && count($point_group) ) { - foreach($obj->moduleSrlList AS $key=>$moduleSrl) + // Get the default group + $default_group = $oMemberModel->getDefaultGroup(); + // Get the removed group and the newly granted group + $del_group_list = array(); + $new_group_srls = array(); + + asort($point_group); + // Reset group after initialization + if($config->group_reset != 'N') { - $oModuleController->insertModulePartConfig('point', $moduleSrl, $pointConfig); + // If the new level is in the right group + if(in_array($level, $point_group)) + { + // Delete all groups except the one which the current level belongs to + foreach($point_group as $group_srl => $target_level) + { + $del_group_list[] = $group_srl; + if($target_level == $level) $new_group_srls[] = $group_srl; + } + } + // Otherwise, in case the level is reduced, add the recent group + else + { + $i = $level; + while($i > 0) + { + if(in_array($i, $point_group)) + { + foreach($point_group as $group_srl => $target_level) + { + if($target_level == $i) + { + $new_group_srls[] = $group_srl; + } + } + $i = 0; + } + $i--; + } + } + // Delete the group of a level which is higher than the current level + foreach($point_group as $group_srl => $target_level) + { + if($target_level > $level) $del_group_list[] = $group_srl; + } + $del_group_list[] = $default_group->group_srl; + } + // Grant a new group + else + { + // Check until the current level by rotating setting the configurations of the point groups + foreach($point_group as $group_srl => $target_level) + { + $del_group_list[] = $group_srl; + if($target_level <= $level) $new_group_srls[] = $group_srl; + } + } + // If there is no a new group, granted the default group + if(!$new_group_srls[0]) $new_group_srls[0] = $default_group->group_srl; + // Remove linkage group + if($del_group_list && count($del_group_list)) + { + $del_group_args->member_srl = $member_srl; + $del_group_args->group_srl = implode(',', $del_group_list); + $del_group_output = executeQuery('point.deleteMemberGroup', $del_group_args); + } + // Grant a new group + foreach($new_group_srls as $group_srl) + { + $new_group_args->member_srl = $member_srl; + $new_group_args->group_srl = $group_srl; + executeQuery('member.addMemberToGroup', $new_group_args); } } } - } -?> + // Cache Settings + $cache_path = sprintf('./files/member_extra_info/point/%s/', getNumberingPath($member_srl)); + FileHandler::makedir($cache_path); + + $cache_filename = sprintf('%s%d.cache.txt', $cache_path, $member_srl); + FileHandler::writeFile($cache_filename, $point); + + $oCacheHandler = &CacheHandler::getInstance('object'); + if($oCacheHandler->isSupport()) + { + $cache_key = 'object:'.$member_srl; + $GLOBALS['__member_info__'][$member_srl] = null; + $oCacheHandler->delete($cache_key); + + $gcache_key = 'object_member_groups:'.$member_srl.'_0'; + $oCacheHandler->delete($gcache_key); + } + + return $output; + } + + function triggerCopyModule(&$obj) + { + $oModuleModel = &getModel('module'); + $pointConfig = $oModuleModel->getModulePartConfig('point', $obj->originModuleSrl); + + $oModuleController = &getController('module'); + if(is_array($obj->moduleSrlList)) + { + foreach($obj->moduleSrlList AS $key=>$moduleSrl) + { + $oModuleController->insertModulePartConfig('point', $moduleSrl, $pointConfig); + } + } + } +} +/* End of file point.controller.php */ +/* Location: ./modules/point/point.controller.php */ diff --git a/modules/point/point.model.php b/modules/point/point.model.php index 21f7dd51a..9516a47d7 100644 --- a/modules/point/point.model.php +++ b/modules/point/point.model.php @@ -1,174 +1,187 @@ pointList[$member_srl]) return true; - // Get from instance memory - if($this->pointList[$member_srl]) return true; - - // Get from file cache - $path = sprintf('./files/member_extra_info/point/%s',getNumberingPath($member_srl)); - $cache_filename = sprintf('%s%d.cache.txt', $path, $member_srl); - if(file_exists($cache_filename)) - { - if(!$this->pointList[$member_srl]) - $this->pointList[$member_srl] = trim(FileHandler::readFile($cache_filename)); - return true; - } - - $args->member_srl = $member_srl; - $output = executeQuery('point.getPoint', $args); - if($output->data->member_srl == $member_srl) - { - if(!$this->pointList[$member_srl]) - $this->pointList[$member_srl] = (int)$output->data->point; - return true; - } - return false; - } - - /** - * @brief Get the points - **/ - function getPoint($member_srl, $from_db = false) { - $member_srl = abs($member_srl); - - // Get from instance memory - if(!$from_db && $this->pointList[$member_srl]) return $this->pointList[$member_srl]; - - // Get from file cache - $path = sprintf('./files/member_extra_info/point/%s',getNumberingPath($member_srl)); - $cache_filename = sprintf('%s%d.cache.txt', $path, $member_srl); - - if(!$from_db && file_exists($cache_filename)) - return $this->pointList[$member_srl] = trim(FileHandler::readFile($cache_filename)); - - // Get from the DB - $args->member_srl = $member_srl; - $output = executeQuery('point.getPoint', $args); - - if(isset($output->data->member_srl)) - { - $point = (int)$output->data->point; - $this->pointList[$member_srl] = $point; - if(!is_dir($path)) FileHandler::makeDir($path); - FileHandler::writeFile($cache_filename, $point); - return $point; - } - return 0; - } - - /** - * @brief Get the level - **/ - function getLevel($point, $level_step) { - $level_count = count($level_step); - for($level=0;$level<=$level_count;$level++) if($point < $level_step[$level]) break; - $level --; - return $level; - } - - function getMembersPointInfo() + // Get from file cache + $path = sprintf('./files/member_extra_info/point/%s',getNumberingPath($member_srl)); + $cache_filename = sprintf('%s%d.cache.txt', $path, $member_srl); + if(file_exists($cache_filename)) { - $member_srls = Context::get('member_srls'); - $member_srls = explode(',',$member_srls); - if(count($member_srls)==0) return; - array_unique($member_srls); + if(!$this->pointList[$member_srl]) + $this->pointList[$member_srl] = trim(FileHandler::readFile($cache_filename)); + return true; + } + $args->member_srl = $member_srl; + $output = executeQuery('point.getPoint', $args); + if($output->data->member_srl == $member_srl) + { + if(!$this->pointList[$member_srl]) + $this->pointList[$member_srl] = (int)$output->data->point; + return true; + } + return false; + } + + /** + * @brief Get the points + */ + function getPoint($member_srl, $from_db = false) + { + $member_srl = abs($member_srl); + + // Get from instance memory + if(!$from_db && $this->pointList[$member_srl]) return $this->pointList[$member_srl]; + + // Get from file cache + $path = sprintf('./files/member_extra_info/point/%s',getNumberingPath($member_srl)); + $cache_filename = sprintf('%s%d.cache.txt', $path, $member_srl); + + if(!$from_db && file_exists($cache_filename)) + return $this->pointList[$member_srl] = trim(FileHandler::readFile($cache_filename)); + + // Get from the DB + $args->member_srl = $member_srl; + $output = executeQuery('point.getPoint', $args); + + if(isset($output->data->member_srl)) + { + $point = (int)$output->data->point; + $this->pointList[$member_srl] = $point; + if(!is_dir($path)) FileHandler::makeDir($path); + FileHandler::writeFile($cache_filename, $point); + return $point; + } + return 0; + } + + /** + * @brief Get the level + */ + function getLevel($point, $level_step) + { + $level_count = count($level_step); + for($level=0;$level<=$level_count;$level++) if($point < $level_step[$level]) break; + $level --; + return $level; + } + + function getMembersPointInfo() + { + $member_srls = Context::get('member_srls'); + $member_srls = explode(',',$member_srls); + if(count($member_srls)==0) return; + array_unique($member_srls); + + $oModuleModel = &getModel('module'); + $config = $oModuleModel->getModuleConfig('point'); + + $info = array(); + foreach($member_srls as $v) + { + $obj = new stdClass; + $obj->point = $this->getPoint($v); + $obj->level = $this->getLevel($obj->point, $config->level_step); + $obj->member_srl = $v; + $info[] = $obj; + } + + $this->add('point_info',$info); + } + + + /** + * @brief Get a list of points members list + */ + function getMemberList($args = null, $columnList = array()) + { + // Arrange the search options + $args->is_admin = Context::get('is_admin')=='Y'?'Y':''; + $args->is_denied = Context::get('is_denied')=='Y'?'Y':''; + $args->selected_group_srl = Context::get('selected_group_srl'); + + $search_target = trim(Context::get('search_target')); + $search_keyword = trim(Context::get('search_keyword')); + + if($search_target && $search_keyword) + { + switch($search_target) + { + case 'user_id' : + if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); + $args->s_user_id = $search_keyword; + break; + case 'user_name' : + if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); + $args->s_user_name = $search_keyword; + break; + case 'nick_name' : + if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); + $args->s_nick_name = $search_keyword; + break; + case 'email_address' : + if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); + $args->s_email_address = $search_keyword; + break; + case 'regdate' : + $args->s_regdate = $search_keyword; + break; + case 'last_login' : + $args->s_last_login = $search_keyword; + break; + case 'extra_vars' : + $args->s_extra_vars = $search_keyword; + break; + } + } + // If there is a selected_group_srl, change the "query id" (for table join) + if($args->selected_group_srl) + { + $query_id = 'point.getMemberListWithinGroup'; + } + else + { + $query_id = 'point.getMemberList'; + } + + $output = executeQuery($query_id, $args, $columnList); + + if($output->total_count) + { $oModuleModel = &getModel('module'); $config = $oModuleModel->getModuleConfig('point'); - $info = array(); - foreach($member_srls as $v) + foreach($output->data as $key => $val) { - $obj = new stdClass; - $obj->point = $this->getPoint($v); - $obj->level = $this->getLevel($obj->point, $config->level_step); - $obj->member_srl = $v; - $info[] = $obj; + $output->data[$key]->level = $this->getLevel($val->point, $config->level_step); } - - $this->add('point_info',$info); } - - /** - * @brief Get a list of points members list - **/ - function getMemberList($args = null, $columnList = array()) { - // Arrange the search options - $args->is_admin = Context::get('is_admin')=='Y'?'Y':''; - $args->is_denied = Context::get('is_denied')=='Y'?'Y':''; - $args->selected_group_srl = Context::get('selected_group_srl'); - - $search_target = trim(Context::get('search_target')); - $search_keyword = trim(Context::get('search_keyword')); - - if($search_target && $search_keyword) { - switch($search_target) { - case 'user_id' : - if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); - $args->s_user_id = $search_keyword; - break; - case 'user_name' : - if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); - $args->s_user_name = $search_keyword; - break; - case 'nick_name' : - if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); - $args->s_nick_name = $search_keyword; - break; - case 'email_address' : - if($search_keyword) $search_keyword = str_replace(' ','%',$search_keyword); - $args->s_email_address = $search_keyword; - break; - case 'regdate' : - $args->s_regdate = $search_keyword; - break; - case 'last_login' : - $args->s_last_login = $search_keyword; - break; - case 'extra_vars' : - $args->s_extra_vars = $search_keyword; - break; - } - } - // If there is a selected_group_srl, change the "query id" (for table join) - if($args->selected_group_srl) { - $query_id = 'point.getMemberListWithinGroup'; - } else { - $query_id = 'point.getMemberList'; - } - - $output = executeQuery($query_id, $args, $columnList); - - if($output->total_count) { - $oModuleModel = &getModel('module'); - $config = $oModuleModel->getModuleConfig('point'); - - foreach($output->data as $key => $val) { - $output->data[$key]->level = $this->getLevel($val->point, $config->level_step); - } - } - - return $output; - } - } -?> + return $output; + } +} +/* End of file point.model.php */ +/* Location: ./modules/point/point.model.php */ diff --git a/modules/point/point.view.php b/modules/point/point.view.php index d8a00522e..67bb6e73e 100644 --- a/modules/point/point.view.php +++ b/modules/point/point.view.php @@ -1,60 +1,65 @@ module_srl; + if(!$current_module_srl) return new Object(); + } + // Get the configuration information + $oModuleModel = &getModel('module'); + $config = $oModuleModel->getModuleConfig('point'); - /** - * @brief Additional configurations for a service module - * Receive the form for the form used by point - **/ - function triggerDispPointAdditionSetup(&$obj) { - $current_module_srl = Context::get('module_srl'); - $current_module_srls = Context::get('module_srls'); + if($current_module_srl) + { + $module_config = $oModuleModel->getModulePartConfig('point', $current_module_srl); + if(!$module_config) + { + $module_config['insert_document'] = $config->insert_document; + $module_config['insert_comment'] = $config->insert_comment; + $module_config['upload_file'] = $config->upload_file; + $module_config['download_file'] = $config->download_file; + $module_config['read_document'] = $config->read_document; + $module_config['voted'] = $config->voted; + $module_config['blamed'] = $config->blamed; + } + } - if(!$current_module_srl && !$current_module_srls) { - $current_module_info = Context::get('current_module_info'); - $current_module_srl = $current_module_info->module_srl; - if(!$current_module_srl) return new Object(); - } - // Get the configuration information - $oModuleModel = &getModel('module'); - $config = $oModuleModel->getModuleConfig('point'); + $module_config['module_srl'] = $current_module_srl; + $module_config['point_name'] = $config->point_name; + Context::set('module_config', $module_config); + // Set the template file + $oTemplate = &TemplateHandler::getInstance(); + $tpl = $oTemplate->compile($this->module_path.'tpl', 'point_module_config'); + $obj .= $tpl; - if($current_module_srl) { - $module_config = $oModuleModel->getModulePartConfig('point', $current_module_srl); - if(!$module_config) { - $module_config['insert_document'] = $config->insert_document; - $module_config['insert_comment'] = $config->insert_comment; - $module_config['upload_file'] = $config->upload_file; - $module_config['download_file'] = $config->download_file; - $module_config['read_document'] = $config->read_document; - $module_config['voted'] = $config->voted; - $module_config['blamed'] = $config->blamed; - } - } - - $module_config['module_srl'] = $current_module_srl; - $module_config['point_name'] = $config->point_name; - Context::set('module_config', $module_config); - // Set the template file - $oTemplate = &TemplateHandler::getInstance(); - $tpl = $oTemplate->compile($this->module_path.'tpl', 'point_module_config'); - $obj .= $tpl; - - return new Object(); - } - } -?> + return new Object(); + } +} +/* End of file point.view.php */ +/* Location: ./modules/point/point.view.php */