Exemplo n.º 1
0
/**
* Easy method to grab localisable tags from the XML array
* @param $header - variable holding all relevant tag information
* @param $tagname - tag name to fetch
* @param $index - Index number to pull.  Not required.
* @return $output - Localised contents of the tag in question
*/
function localise_tags($header, $tagname, $index = false)
{
    global $user;
    $output = '';
    if (isset($header[$tagname]) && is_array($header[$tagname])) {
        foreach ($header[$tagname] as $i => $void) {
            // Ugly.
            if ($index !== false && $index != $i) {
                continue;
            }
            if (!isset($header[$tagname][$i]['attrs']['LANG'])) {
                // avoid notice...although, if we get here, MODX is invalid.
                continue;
            }
            if (match_language($user->data['user_lang'], $header[$tagname][$i]['attrs']['LANG'])) {
                $output = isset($header[$tagname][$i]['data']) ? htmlspecialchars(trim($header[$tagname][$i]['data'])) : '';
            }
        }
        // If there was no language match, put something out there
        // This is probably fairly common for non-English users of the MODs Manager
        if (!$output) {
            $output = isset($header[$tagname][0]['data']) ? htmlspecialchars(trim($header[$tagname][0]['data'])) : '';
        }
    }
    if (!$output) {
        // Should never happen.  If it does, either the MOD is not valid MODX
        // or the tag being localised is optional
        $output = isset($user->lang['UNKNOWN_MOD_' . $tagname]) ? $user->lang['UNKNOWN_MOD_' . $tagname] : 'UNKNOWN_MOD_' . $tagname;
    }
    return $output;
}
Exemplo n.º 2
0
 /**
  * return array of the basic MOD details
  */
 function get_details()
 {
     global $user;
     if (empty($this->data)) {
         $this->set_file($this->file);
     }
     $header = array('MOD-VERSION' => array(0 => array('children' => array())), 'INSTALLATION' => array(0 => array('children' => array('TARGET-VERSION' => array(0 => array('data' => ''))))), 'AUTHOR-GROUP' => array(0 => array('children' => array('AUTHOR' => array()))), 'HISTORY' => array(0 => array('children' => array('ENTRY' => array()))));
     $version = $phpbb_version = '';
     $header = $this->data[0]['children']['HEADER'][0]['children'];
     // get MOD version information
     // This is also our first opportunity to differentiate MODX 1.0.x from
     // MODX 1.2.0.
     if (isset($header['MOD-VERSION'][0]['children'])) {
         $this->modx_version = 1.0;
         $version_info = $header['MOD-VERSION'][0]['children'];
         $version = isset($version_info['MAJOR'][0]['data']) ? trim($version_info['MAJOR'][0]['data']) : 0;
         $version .= '.' . (isset($version_info['MINOR'][0]['data']) ? trim($version_info['MINOR'][0]['data']) : 0);
         $version .= '.' . (isset($version_info['REVISION'][0]['data']) ? trim($version_info['REVISION'][0]['data']) : 0);
         $version .= isset($version_info['RELEASE'][0]['data']) ? trim($version_info['RELEASE'][0]['data']) : '';
     } else {
         $this->modx_version = 1.2;
         $version = trim($header['MOD-VERSION'][0]['data']);
     }
     // get phpBB version recommendation
     switch ($this->modx_version) {
         case 1.0:
             if (isset($header['INSTALLATION'][0]['children']['TARGET-VERSION'][0]['children'])) {
                 $version_info = $header['INSTALLATION'][0]['children']['TARGET-VERSION'][0]['children'];
                 $phpbb_version = isset($version_info['MAJOR'][0]['data']) ? trim($version_info['MAJOR'][0]['data']) : 0;
                 $phpbb_version .= '.' . (isset($version_info['MINOR'][0]['data']) ? trim($version_info['MINOR'][0]['data']) : 0);
                 $phpbb_version .= '.' . (isset($version_info['REVISION'][0]['data']) ? trim($version_info['REVISION'][0]['data']) : 0);
                 $phpbb_version .= isset($version_info['RELEASE'][0]['data']) ? trim($version_info['RELEASE'][0]['data']) : '';
             }
             break;
         case 1.2:
         default:
             $phpbb_version = isset($header['INSTALLATION'][0]['children']['TARGET-VERSION'][0]['data']) ? $header['INSTALLATION'][0]['children']['TARGET-VERSION'][0]['data'] : 0;
             break;
     }
     $author_info = $header['AUTHOR-GROUP'][0]['children']['AUTHOR'];
     $author_details = array();
     for ($i = 0; $i < sizeof($author_info); $i++) {
         $author_details[] = array('AUTHOR_NAME' => isset($author_info[$i]['children']['USERNAME'][0]['data']) ? trim($author_info[$i]['children']['USERNAME'][0]['data']) : '', 'AUTHOR_EMAIL' => isset($author_info[$i]['children']['EMAIL'][0]['data']) ? trim($author_info[$i]['children']['EMAIL'][0]['data']) : '', 'AUTHOR_REALNAME' => isset($author_info[$i]['children']['REALNAME'][0]['data']) ? trim($author_info[$i]['children']['REALNAME'][0]['data']) : '', 'AUTHOR_WEBSITE' => isset($author_info[$i]['children']['HOMEPAGE'][0]['data']) ? trim($author_info[$i]['children']['HOMEPAGE'][0]['data']) : '');
     }
     // history
     $history_info = !empty($header['HISTORY'][0]['children']['ENTRY']) ? $header['HISTORY'][0]['children']['ENTRY'] : array();
     $history_size = sizeof($history_info);
     $mod_history = array();
     for ($i = 0; $i < $history_size; $i++) {
         $changes = array();
         $entry = $history_info[$i]['children'];
         $changelog = isset($entry['CHANGELOG']) ? $entry['CHANGELOG'] : array();
         $changelog_size = sizeof($changelog);
         $changelog_id = 0;
         for ($j = 0; $j < $changelog_size; $j++) {
             // Ignore changelogs in foreign languages except in the case that there is no
             // match for the current user's language
             // TODO: Look at modifying localise_tags() for use here.
             if (match_language($user->data['user_lang'], $changelog[$j]['attrs']['LANG'])) {
                 $changelog_id = $j;
             }
         }
         $change_count = isset($changelog[$changelog_id]['children']['CHANGE']) ? sizeof($changelog[$changelog_id]['children']['CHANGE']) : 0;
         for ($j = 0; $j < $change_count; $j++) {
             $changes[] = $changelog[$changelog_id]['children']['CHANGE'][$j]['data'];
         }
         switch ($this->modx_version) {
             case 1.0:
                 $changelog_version_ary = isset($entry['REV-VERSION'][0]['children']) ? $entry['REV-VERSION'][0]['children'] : array();
                 $changelog_version = isset($changelog_version_ary['MAJOR'][0]['data']) ? trim($changelog_version_ary['MAJOR'][0]['data']) : 0;
                 $changelog_version .= '.' . (isset($changelog_version_ary['MINOR'][0]['data']) ? trim($changelog_version_ary['MINOR'][0]['data']) : 0);
                 $changelog_version .= '.' . (isset($changelog_version_ary['REVISION'][0]['data']) ? trim($changelog_version_ary['REVISION'][0]['data']) : 0);
                 $changelog_version .= isset($changelog_version_ary['RELEASE'][0]['data']) ? trim($changelog_version_ary['RELEASE'][0]['data']) : '';
                 break;
             case 1.2:
             default:
                 $changelog_version = isset($entry['REV-VERSION'][0]['data']) ? $entry['REV-VERSION'][0]['data'] : '0.0.0';
                 break;
         }
         $mod_history[] = array('DATE' => $entry['DATE'][0]['data'], 'VERSION' => $changelog_version, 'CHANGES' => $changes);
     }
     $children = array();
     // Parse links
     if ($this->modx_version == 1.2) {
         $link_group = isset($header['LINK-GROUP'][0]['children']) ? $header['LINK-GROUP'][0]['children'] : array();
         if (isset($link_group['LINK'])) {
             for ($i = 0, $size = sizeof($link_group['LINK']); $i <= $size; $i++) {
                 // do some stuff with attrs
                 // commented out due to a possible PHP bug.  When using this,
                 // sizeof($link_group) changed each time ...
                 // $attrs = &$link_group[$i]['attrs'];
                 if (!isset($link_group['LINK'][$i])) {
                     continue;
                 }
                 if ($link_group['LINK'][$i]['attrs']['TYPE'] == 'text') {
                     continue;
                 }
                 $children[$link_group['LINK'][$i]['attrs']['TYPE']][] = array('href' => $link_group['LINK'][$i]['attrs']['HREF'], 'realname' => isset($link_group['LINK'][$i]['attrs']['REALNAME']) ? $link_group['LINK'][$i]['attrs']['REALNAME'] : core_basename($link_group['LINK'][$i]['attrs']['HREF']), 'title' => localise_tags($link_group, 'LINK', $i));
             }
         }
     }
     // try not to hardcode schema?
     $details = array('MOD_PATH' => $this->file, 'MOD_NAME' => localise_tags($header, 'TITLE'), 'MOD_DESCRIPTION' => nl2br(localise_tags($header, 'DESCRIPTION')), 'MOD_VERSION' => htmlspecialchars(trim($version)), 'AUTHOR_DETAILS' => $author_details, 'AUTHOR_NOTES' => nl2br(localise_tags($header, 'AUTHOR-NOTES')), 'MOD_HISTORY' => $mod_history, 'PHPBB_VERSION' => $phpbb_version, 'CHILDREN' => $children);
     return $details;
 }
Exemplo n.º 3
0
function do_import_resume($info, $uid)
{
    global $db, $_CFG, $timestamp;
    if ($info && $uid) {
        require_once QISHI_ROOT_PATH . '/include/fun_import.php';
        if (empty($info['basicinfo'])) {
            return false;
        }
        $info['basicinfo']['fullname'] = unicode_decode($info['basicinfo']['fullname']);
        $setsqlarr = iconv_to_gbk($info['basicinfo']);
        $setsqlarr['uid'] = intval($uid);
        $setsqlarr['title'] = "未命名简历";
        $setsqlarr['display_name'] = 1;
        $setsqlarr['sex'] = $setsqlarr['sex_cn'] == '男' ? 1 : 2;
        $experience = match_experience($setsqlarr['experience_cn']);
        $setsqlarr['experience_cn'] = $experience[1];
        $setsqlarr['experience'] = $experience[0];
        $setsqlarr['email_notify'] = 1;
        $setsqlarr['marriage'] = $setsqlarr['marriage_cn'] == '已婚' ? 2 : 1;
        $intentionjobsarr = explode('、', $setsqlarr['intention_jobs']);
        $match_jobs_id_arr = array();
        $match_jobs_cn_arr = array();
        foreach ($intentionjobsarr as $key => $value) {
            $match_jobs_arr = match_jobs_category($value);
            if ($match_jobs_arr) {
                $match_jobs_id_arr[] = $match_jobs_arr['topclass'] . '.' . $match_jobs_arr['category'] . '.' . $match_jobs_arr['subclass'];
                $match_jobs_cn_arr[] = $match_jobs_arr['category_cn'];
            }
        }
        $setsqlarr['intention_jobs'] = !empty($match_jobs_cn_arr) ? implode(',', $match_jobs_cn_arr) : '';
        $intention_jobs_id = !empty($match_jobs_id_arr) ? implode(',', $match_jobs_id_arr) : '';
        $tradearr = explode('、', $setsqlarr['trade_cn']);
        $match_trade_id_arr = array();
        foreach ($tradearr as $key => $value) {
            $match_trade_arr = match_trade($value);
            if ($match_trade_arr) {
                $match_trade_id_arr[] = $match_jobs_arr['id'];
            }
        }
        $intentiontrade = !empty($match_trade_id_arr) ? implode(',', $match_trade_id_arr) : '';
        $districtarr = explode('、', $setsqlarr['district_cn']);
        $match_district_id_arr = array();
        foreach ($districtarr as $key => $value) {
            $match_district_arr = match_district($value);
            if ($match_district_arr) {
                $match_district_id_arr[] = $match_district_arr['district'] . '.' . $match_district_arr['sdistrict'];
            }
        }
        $intentiondistrict = !empty($match_district_id_arr) ? implode(',', $match_district_id_arr) : '';
        $match_current_arr = match_current($setsqlarr['current_cn']);
        if ($match_current_arr) {
            $setsqlarr['current'] = $match_current_arr['id'];
            $setsqlarr['current_cn'] = $match_current_arr['cn'];
        }
        $match_nature_arr = match_nature($setsqlarr['nature_cn']);
        if ($match_nature_arr) {
            $setsqlarr['nature'] = $match_nature_arr['id'];
            $setsqlarr['nature_cn'] = $match_nature_arr['cn'];
        }
        $match_wage_arr = match_wage($setsqlarr['wage_cn']);
        if ($match_wage_arr) {
            $setsqlarr['wage'] = $match_wage_arr['id'];
            $setsqlarr['wage_cn'] = $match_wage_arr['cn'];
        }
        $setsqlarr['refreshtime'] = $timestamp;
        $setsqlarr['audit'] = intval($_CFG['audit_resume']);
        $setsqlarr['resume_from_pc'] = 1;
        $setsqlarr['addtime'] = $timestamp;
        $pid = $db->inserttable(table('resume'), $setsqlarr, 1);
        if ($pid) {
            $searchtab['id'] = $pid;
            $searchtab['uid'] = $uid;
            $db->inserttable(table('resume_search_key'), $searchtab);
            $db->inserttable(table('resume_search_rtime'), $searchtab);
            add_resume_jobs($pid, $uid, $intention_jobs_id) ? "" : showmsg('保存失败!', 0);
            add_resume_district($pid, $uid, $intentiondistrict) ? "" : showmsg('保存失败!', 0);
            add_resume_trade($pid, $uid, $intentiontrade) ? "" : showmsg('保存失败!', 0);
            if (!get_userprofile($uid)) {
                $infoarr['realname'] = $setsqlarr['fullname'];
                $infoarr['sex'] = $setsqlarr['sex'];
                $infoarr['sex_cn'] = $setsqlarr['sex_cn'];
                $infoarr['birthday'] = $setsqlarr['birthdate'];
                $infoarr['residence'] = $setsqlarr['residence'];
                $infoarr['experience'] = $setsqlarr['experience'];
                $infoarr['experience_cn'] = $setsqlarr['experience_cn'];
                $infoarr['householdaddress'] = $setsqlarr['householdaddress'];
                $infoarr['marriage'] = $setsqlarr['marriage'];
                $infoarr['marriage_cn'] = $setsqlarr['marriage_cn'];
                $infoarr['phone'] = $setsqlarr['telephone'];
                $infoarr['email'] = $setsqlarr['email'];
                $infoarr['uid'] = intval($uid);
                $db->inserttable(table('members_info'), $infoarr);
            }
            //教育经历
            if (!empty($info['eduinfo'])) {
                foreach ($info['eduinfo'] as $key => $value) {
                    $eduarrsql = iconv_to_gbk($value);
                    $eduarrsql['pid'] = $pid;
                    $eduarrsql['uid'] = $uid;
                    $match_education_arr = match_education($eduarrsql['education_cn']);
                    if ($match_education_arr) {
                        $eduarrsql['education'] = $match_education_arr['id'];
                        $eduarrsql['education_cn'] = $match_education_arr['cn'];
                    }
                    $db->inserttable(table("resume_education"), $eduarrsql);
                }
            }
            //工作经历
            if (!empty($info['workinfo'])) {
                foreach ($info['workinfo'] as $key => $value) {
                    $workarrsql = iconv_to_gbk($value);
                    $workarrsql['pid'] = $pid;
                    $workarrsql['uid'] = $uid;
                    $db->inserttable(table("resume_work"), $workarrsql);
                }
            }
            //培训经历
            if (!empty($info['traininginfo'])) {
                foreach ($info['traininginfo'] as $key => $value) {
                    $trainingarrsql = iconv_to_gbk($value);
                    $trainingarrsql['pid'] = $pid;
                    $trainingarrsql['uid'] = $uid;
                    $db->inserttable(table("resume_training"), $trainingarrsql);
                }
            }
            //语言能力
            if (!empty($info['languageinfo'])) {
                foreach ($info['languageinfo'] as $key => $value) {
                    $languagearrsql = iconv_to_gbk($value);
                    $languagearrsql['pid'] = $pid;
                    $languagearrsql['uid'] = $uid;
                    $match_language_arr = match_language($languagearrsql['language_cn']);
                    if ($match_language_arr) {
                        $languagearrsql['language'] = $match_language_arr['id'];
                        $languagearrsql['language_cn'] = $match_language_arr['cn'];
                    }
                    $match_language_level_arr = match_language_level($languagearrsql['level_cn']);
                    if ($match_language_level_arr) {
                        $languagearrsql['level'] = $match_language_level_arr['id'];
                        $languagearrsql['level_cn'] = $match_language_level_arr['cn'];
                    }
                    $db->inserttable(table("resume_language"), $languagearrsql);
                }
            }
            //证书
            if (!empty($info['credentinfo'])) {
                foreach ($info['credentinfo'] as $key => $value) {
                    $credentarrsql = iconv_to_gbk($value);
                    $credentarrsql['pid'] = $pid;
                    $credentarrsql['uid'] = $uid;
                    $db->inserttable(table("resume_credent"), $credentarrsql);
                }
            }
            check_resume($uid, $pid);
            write_memberslog($uid, 2, 1101, $_SESSION['username'], "导入了简历");
            return true;
        } else {
            return false;
        }
    } else {
        return false;
    }
}
Exemplo n.º 4
0
 /**
  * Get all contrib links for the selected language.
  * This functions will be removed.
  */
 function get_contrib_lang($contrib, $lang = 'en')
 {
     $ary = array();
     foreach ($contrib as $element) {
         if (match_language($lang, $element['lang'])) {
             $ary[] = $element;
         }
     }
     return $ary;
 }