会社について

「体験入社」大歓迎です!

どんな施設なのか、どんな働き方か、1日体験してみませんか?(半日体験も可能です)
もちろん給料もお支払いします!

「体験入社」⇒「ご採用」となったスタッフが多数おります。
実際に、職場を見ていただくと「働きやすい環境で安心しました」「働くイメージが持てました」と言っていただいています。

◎施設見学ご希望の方は、下記いずれかの方法でご連絡ください。

■こちらのページからのお申込み
1.ページ下【今すぐ簡単!30秒応募!】に必須項目をご入力下さい
2.「その他のご用件」に『体験入社』とご入力下さい
3.「同意して送信する」をクリックで、お申込み完了です
※後ほど、担当者からご連絡させていただきます。

■お電話でのお申込み
各事業所宛にご連絡ください。
四日市:059-325-7630
小古曽:059-340-4165
伊勢:059-620-1165
津:059-272-4165

株式会社樹 企業理念

我々は五つの「気」(樹 いつき)を大切にし、
介護支援を行います。

我々は、感謝の気持ちを常に持ち「気配り」
ある介護支援を行います。

我々は、笑顔で心のこもった「気遣い」
ある介護支援を行います。

我々は、「気働き」溢れる介護支援を行います。

我々は、思いやりの精神を大切にし「一団和気」
の環境を育みます。

我々は、「意気」に富んだ人財を育成致します。

株式会社樹 の求人一覧

CAREERS

今すぐ簡単!30秒応募! Entry&Contact

必 須 応募職種
必 須 お名前
必 須 メールアドレス
必 須 電話番号
任意 その他のご用件

個人情報の取り扱いについて

本ウェブサイトにおける個人情報の取り扱いについて、個人情報保護に関する法令を遵守し、これを適切に管理、保護し、安心できる個人情報保護体制の運用・向上を目的として、プライバシーポリシーを以下のように定めます。

1. 個人情報の定義
個人情報とは、「個人情報の保護に関する法律」に規定される生存する個人に関する情報であって、氏名、生年月日その他の記述等により特定の個人を識別することができる情報(個人識別情報)を指します。

2. 個人情報の収集、利用、提供
収集した個人情報の使用目的・範囲を下記に限定し、適切に取り扱います。応募者等の同意を事前に得た場合、又は法令により許された場合を除き、個人情報を第三者に提供しません。

  • a.応募者等からのお問い合わせに対応・管理するため
  • b.本ウェブサイトにおけるサービスの提供・運用のため
  • c.重要なお知らせなど必要に応じたご連絡のため
  • d.上記の利用目的に付随する目的

3. プライバシー尊重
プライバシーを尊重し、収集した個人情報に対し、開示、訂正、削除、利用停止を求められた時には、合理的な期間、妥当な範囲内でこれに応じます。

4. 法令等の遵守
応募者等の個人情報の取得、利用その他一切の取り扱いについて、個人情報の保護に関する法律、その他の関連法令、及び本プライバシーポリシーを遵守します。

5. 安全管理措置
応募者等の個人情報を正確かつ最新の内容に保つよう努めるとともに、不正なアクセス、改ざん、漏えい、滅失及び毀損から保護するため、必要な安全管理措置を講じます。

6. Cookieについて
本ウェブサイトでは、一部のコンテンツにおいてCookieを利用しています。 Cookieとは、webコンテンツへのアクセスに関する情報であり、氏名・メールアドレス・住所・電話番号は含まれません。また、お使いのブラウザ設定からCookieを無効にすることが可能です。

7. アクセス解析ツールについて
本ウェブサイトでは、Google LLCが提供するアクセス解析ツール「Googleアナリティクス」を利用しています。 Googleアナリティクスは、トラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。この機能はCookieを無効にすることで収集を拒否することが出来ます。

8. プライバシーポリシーの変更
本プライバシーポリシーの内容は、法令その他本プライバシーポリシーで別段の定めのある事項を除いて,応募者等に通知することなく変更することができるものとします。

9. お問い合わせ窓口
本プライバシーポリシーに関するお問い合わせは、下記までお願いいたします。

株式会社樹

電話:

会社概要Company

会社名 株式会社樹
所在地 三重県四日市市平尾町3554-3
代表者名 樋尾重樹
設立 平成24年8月28日
事業内容 通所介護・日常生活支援総合事業
企業サイト https://dayservice-itsuki.jp/
電話で応募 メールで応募

Debug Information (Developer Only) by Application::shutdownHandler()

Error File: /var/www/vhosts/kyujinbu.com/code/application/detail/Abstract.php
Error Line: 495
Error Message: strlen(): Passing null to parameter #1 ($string) of type string is deprecated
1: <?php
2:
3: class AbstractController extends MyApplication
4: {
5: static $_privacy_policy = '<p>本ウェブサイトにおける個人情報の取り扱いについて、個人情報保護に関する法令を遵守し、これを適切に管理、保護し、安心できる個人情報保護体制の運用・向上を目的として、プライバシーポリシーを以下のように定めます。</p>
6: <p>
7: 1. 個人情報の定義<br>
8: 個人情報とは、「個人情報の保護に関する法律」に規定される生存する個人に関する情報であって、氏名、生年月日その他の記述等により特定の個人を識別することができる情報(個人識別情報)を指します。
9: </p>
10: <div class="has-mb">
11: <p>
12: 2. 個人情報の収集、利用、提供<br>
13: 収集した個人情報の使用目的・範囲を下記に限定し、適切に取り扱います。応募者等の同意を事前に得た場合、又は法令により許された場合を除き、個人情報を第三者に提供しません。
14: </p>
15: <ul>
16: <li>a.応募者等からのお問い合わせに対応・管理するため</li>
17: <li>b.本ウェブサイトにおけるサービスの提供・運用のため</li>
18: <li>c.重要なお知らせなど必要に応じたご連絡のため</li>
19: <li>d.上記の利用目的に付随する目的</li>
20: </ul>
21: </div>
22: <p>
23: 3. プライバシー尊重<br>
24: プライバシーを尊重し、収集した個人情報に対し、開示、訂正、削除、利用停止を求められた時には、合理的な期間、妥当な範囲内でこれに応じます。
25: </p>
26: <p>
27: 4. 法令等の遵守<br>
28: 応募者等の個人情報の取得、利用その他一切の取り扱いについて、個人情報の保護に関する法律、その他の関連法令、及び本プライバシーポリシーを遵守します。
29: </p>
30: <p>
31: 5. 安全管理措置<br>
32: 応募者等の個人情報を正確かつ最新の内容に保つよう努めるとともに、不正なアクセス、改ざん、漏えい、滅失及び毀損から保護するため、必要な安全管理措置を講じます。
33: </p>
34: <p>
35: 6. Cookieについて<br>
36: 本ウェブサイトでは、一部のコンテンツにおいてCookieを利用しています。 Cookieとは、webコンテンツへのアクセスに関する情報であり、氏名・メールアドレス・住所・電話番号は含まれません。また、お使いのブラウザ設定からCookieを無効にすることが可能です。
37: </p>
38: <p>
39: 7. アクセス解析ツールについて<br>
40: 本ウェブサイトでは、Google LLCが提供するアクセス解析ツール「Googleアナリティクス」を利用しています。 Googleアナリティクスは、トラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。この機能はCookieを無効にすることで収集を拒否することが出来ます。
41: </p>
42: <p>
43: 8. プライバシーポリシーの変更<br>
44: 本プライバシーポリシーの内容は、法令その他本プライバシーポリシーで別段の定めのある事項を除いて,応募者等に通知することなく変更することができるものとします。
45: </p>
46: <p>
47: 9. お問い合わせ窓口<br>
48: 本プライバシーポリシーに関するお問い合わせは、下記までお願いいたします。
49: </p>
50: <p>%user_name%</p>
51: <p>電話:%phone%</p>
52: ';
53:
54: // メンバ変数
55: protected $_lh = null;
56: protected $_model_jobs;
57: protected $_model_medias;
58: protected $_model_categories;
59: protected $_model_occupations;
60: protected $_model_searches;
61: protected $_model_keywords;
62: protected $_model_tags;
63: protected $_model_mail;
64: protected $_model_job_name;
65: protected $_model_job_store;
66: protected $_model_external_job_id_history;
67: protected $_model_enquete;
68: protected $_userData;
69:
70: /**
71: * コンストラクタ
72: * Constructor
73: */
74: public function __construct()
75: {
76: parent::__construct();
77: }
78:
79: /**
80: * イニシャライズ
81: * Initialize progress
82: *
83: * 省略可。定義されているときは __construct() の後で呼び出される。
84: * __construct() との違いは自身のインスタンスが生成されているので
85: * $thisにより、Applicationクラスのメソッドが使用できる。
86: *
87: * This method run after making self instance.
88: * So, it can use Application class method, for example "$this->in()".
89: * It is the difference between __init and construct.
90: * If this method is nothing, initializing progress is omitted.
91: */
92: public function __init()
93: {
94: parent::__init();
95:
96: // LH用汎用クラスを読込
97: // Load general class for LH Fegg
98: $this->_lh = $this->getClass( 'LH_FW' );
99:
100: //'visible' => 'visible', visible = 1 を除外するかわりに、各種必要な箇所で明示的に visible = 1 するように
101: $this->_model_jobs = new Model(false, array(
102: 'table' => 'cms_job',
103: 'id' => 'job_id',
104: ));
105: $this->page['id'] = $this->_model_jobs->getPrimary();
106:
107: $this->_model_medias = new Model(false, array(
108: 'table' => 'cms_job_media'
109: ));
110:
111: $this->_model_categories = new Model(false, array(
112: 'table' => 'cms_job_category',
113: 'id' => array('job_id', 'category_id'),
114: ));
115:
116: $this->_model_occupations = new Model(false, array(
117: 'table' => 'cms_job_occupation',
118: 'id' => array('job_id', 'suid'),
119: ));
120:
121: $this->_model_searches = new Model(false, array(
122: 'table' => 'cms_job_search',
123: 'id' => array('job_id', 'suid'),
124: ));
125:
126: $this->_model_keywords = new Model(false, array(
127: 'table' => 'cms_job_keyword',
128: 'id' => array('job_id', 'keyword_id'),
129: ));
130:
131: $this->_model_tags = new Model(false, array(
132: 'table' => 'cms_job_tag',
133: 'id' => 'tag_id',
134: ));
135:
136: $this->_model_mail = new Model(false, array(
137: 'table' => 'cms_mailitem',
138: 'id' => 'mailitem_id',
139: ));
140:
141: $this->_model_job_name = new Model(false, array(
142: 'table' => 'cms_job_name',
143: 'id' => 'user_id',
144: ));
145:
146: $this->_model_job_store = new Model(false, array(
147: 'table' => 'cms_job_store',
148: 'id' => 'user_id',
149: ));
150:
151: $this->_model_external_job_id_history = new Model(true, array(
152: 'table' => 'cms_external_job_id_history'
153: ));
154:
155: $this->_model_enquete = new Model(true, array(
156: 'table' => 'cms_enquete',
157: 'id' => 'user_id',
158: 'visible' => 'visible'
159: ));
160:
161: // Get User Data
162: $this->_userData = $this->getClass('UserData');
163: }
164:
165: /**
166: * Assign User information by Login Name
167: *
168: * @param string $userLogin
169: * @return void
170: */
171: protected function assignUserInfo($userLogin)
172: {
173: $this->_userData->search($userLogin);
174:
175: if(! $this->_userData->isExists()) {
176: $this->redirect('/');
177: }
178: $this->page['user'] = $this->_userData->getData();
179:
180: // 特別 動画は t1 テンプレートのみ許す。デフォルトテンプレート(t0) に動画がある場合は消去
181: if( $this->page['user']['html_template'] == '0' && $this->page['user']['main_image_id'] ){
182: $imageRow = getImageRow($this->page['user']['main_image_id']);
183: if( ! ($imageRow && is_array($imageRow) && $imageRow['type'] == 'image') ){
184: $this->page['user']['main_image_id'] = null;
185: }
186: }
187:
188: // Get user's theme Color
189: if(! isset($this->page['user']['valiation']) || $this->page['user']['valiation'] == '') {
190: $this->page['user']['valiation'] = 'blue';
191: }
192:
193: // Check Exists Theme Color
194: //$existsColor = $this->config['category_info']['valiation'];
195: //if (! isset($existsColor[$this->page['user']['valiation']])) {
196: // $this->page['user']['valiation'] = 'blue';
197: //}
198:
199: // Update Contact Config
200: //$this->contact_config['admin_name'] = $this->page['user']['name'];
201: // $this->contact_config['admin_mail'] = $this->page['user']['mailaddress'];
202: }
203:
204: protected function assignPickupData()
205: {
206: // Get Job list data
207: $this->page['list_data']
208: = $this->_model_jobs
209: ->listMax(3)//3
210: ->current($this->in('p'))
211: ->select('*, usual_name AS selected_name, (SELECT image_id FROM cms_job_media AS tm WHERE tm.job_id = cms_job.job_id AND tm.media_role = \'main\' and tm.valid = 1 ORDER BY tm.order_by ASC LIMIT 1) AS main_image_id')
212: ->where('user_id = ?', $this->_userData->getId())
213: ->where('priority_flag = ?', 1)
214: ->order('post_date', 'desc')
215: ->simple_find();
216: }
217:
218: /**
219: * Get Top Page data
220: *
221: * @return void
222: */
223: protected function executeJobSearch($searches, $page)
224: {
225: // Search Jobs
226: $this->_model_jobs->where('(visible = 1 OR visible = 99)');
227:
228: // Old name
229: if( isset($searches['name']) ){
230: if( is_array($searches['name']) && 0 < count($searches['name']) ){
231:
232: if( $this->page['user']['job_name_select'] == 2 ){
233: $this->_model_jobs->where('name2 IN ('. implode(',', array_fill(0, count($searches['name']), '?')) . ')', $searches['name']);
234: } else {
235: $this->_model_jobs->where('name IN ('. implode(',', array_fill(0, count($searches['name']), '?')) . ')', $searches['name']);
236: }
237:
238: } else {
239: $search_name_strlen = mb_strlen($searches['name']);
240: if(100 < $search_name_strlen){
241: $this->page['search_error'][] = '[職種] 検索文字数は100文字までにしてください';
242:
243: } else if( 0 < $search_name_strlen ){
244: if( $this->page['user']['job_name_select'] == 2 ){
245: $this->_model_jobs->where('name2 like ?', '%' . $searches['name'] . '%');
246: } else {
247: $this->_model_jobs->where('name like ?', '%' . $searches['name'] . '%');
248: }
249: }
250: }
251: }
252:
253: // 検索用 name
254: if( isset($searches['search_name']) ){
255: if( is_array($searches['search_name']) && 0 < count($searches['search_name']) ){
256:
257: if( in_array('その他', $searches['search_name'], true) ){
258: if( count($searches['search_name']) === 1 ){
259:
260: $this->_model_jobs->where('', array(), 'AND');
261: $this->_model_jobs->whereOpen();
262: $this->_model_jobs->where("search_name IS NULL OR search_name = ''");
263: $this->_model_jobs->whereClose();
264:
265: } else {
266: $searches['search_name'] = array_filter($searches['search_name'], function($item) {
267: return $item !== "その他";
268: });
269:
270: $this->_model_jobs->where('', array(), 'AND');
271: $this->_model_jobs->whereOpen();
272: $this->_model_jobs->where('search_name IN ('. implode(',', array_fill(0, count($searches['search_name']), '?')) . ')', $searches['search_name'], 'OR');
273: $this->_model_jobs->where("search_name IS NULL OR search_name = ''", array(), 'OR');
274: $this->_model_jobs->whereClose();
275: }
276:
277: } else {
278: $this->_model_jobs->where('search_name IN ('. implode(',', array_fill(0, count($searches['search_name']), '?')) . ')', $searches['search_name']);
279: }
280:
281: } else {
282: $search_name_strlen = mb_strlen($searches['search_name']);
283: if(100 < $search_name_strlen){
284: $this->page['search_error'][] = '[職種] 検索文字数は100文字までにしてください';
285:
286: } else if( 0 < $search_name_strlen ){
287: $this->_model_jobs->where('search_name like ?', '%' . $searches['search_name'] . '%');
288: }
289: }
290: }
291:
292: // 店舗名
293: if( isset($searches['store']) ){
294: if( is_array($searches['store']) && 0 < count($searches['store']) ){
295:
296: if( in_array('その他', $searches['store'], true) ){
297: if( count($searches['store']) === 1 ){
298:
299: $this->_model_jobs->where('', array(), 'AND');
300: $this->_model_jobs->whereOpen();
301: $this->_model_jobs->where("store IS NULL OR store = ''");
302: $this->_model_jobs->whereClose();
303:
304: } else {
305: $searches['store'] = array_filter($searches['store'], function($item) {
306: return $item !== "その他";
307: });
308:
309: $this->_model_jobs->where('', array(), 'AND');
310: $this->_model_jobs->whereOpen();
311: $this->_model_jobs->where('store IN ('. implode(',', array_fill(0, count($searches['store']), '?')) . ')', $searches['store'], 'OR');
312: $this->_model_jobs->where("store IS NULL OR store = ''", array(), 'OR');
313: $this->_model_jobs->whereClose();
314: }
315:
316: } else {
317: $this->_model_jobs->where('store IN ('. implode(',', array_fill(0, count($searches['store']), '?')) . ')', $searches['store']);
318: }
319:
320: } else {
321: $store_strlen = mb_strlen($searches['store']);
322: if(100 < $store_strlen){
323: $this->page['search_error'][] = '[店舗名] 検索文字数は100文字までにしてください';
324:
325: } else if( 0 < $store_strlen ){
326: $this->_model_jobs->where('store like ?', '%' . $searches['store'] . '%');
327: }
328: }
329: }
330:
331: if( isset($searches['place']) ){
332: $search_place_strlen = mb_strlen($searches['place']);
333: if( 100 < $search_place_strlen ){
334: $this->page['search_error'][] = '[勤務地] 検索文字数は100文字までにしてください';
335: } else if( 0 < $search_place_strlen ){
336: $this->_model_jobs->where('', array(), 'AND');
337: $this->_model_jobs->whereOpen();
338: $this->_model_jobs->where('pref like ?', '%' . $searches['place'] . '%', 'OR');
339: $this->_model_jobs->where('city like ?', '%' . $searches['place'] . '%', 'OR');
340: $this->_model_jobs->where('place like ?', '%' . $searches['place'] . '%', 'OR');
341: $this->_model_jobs->whereClose();
342: }
343: }
344:
345: // New search pref
346: if( isset($searches['pref']) ){
347: if( is_array($searches['pref']) && 0 < count($searches['pref']) ){
348: $this->_model_jobs->where('pref IN ('. implode(',', array_fill(0, count($searches['pref']), '?')) . ')', $searches['pref']);
349: } else if( 0 < mb_strlen($searches['pref']) ){
350: $this->_model_jobs->where('pref = ?', $searches['pref']);
351: }
352: }
353:
354: // New search short_type
355: if( isset($searches['short_type']) && 0 < mb_strlen($searches['short_type']) ){
356: $this->_model_jobs->where('short_type = ?', $searches['short_type']);
357: }
358:
359: $pageUnitCount = null;
360: if( 2 == $this->page['user']['html_template'] || 3 == $this->page['user']['html_template'] ){
361: $pageUnitCount = 12;
362: } else {
363: $pageUnitCount = 60;
364: }
365:
366: if(! isset($this->page['search_error'])){
367: $this->page['jobs'] = $this->_model_jobs
368: ->select('*, usual_name AS selected_name, (SELECT image_id FROM cms_job_media AS tm WHERE tm.job_id = cms_job.job_id AND tm.media_role = \'main\' and tm.valid = 1 ORDER BY tm.order_by ASC LIMIT 1) AS main_image_id')
369: ->where('user_id = ?', $this->_userData->getId())
370: ->order('priority_flag', 'desc')
371: ->order('post_date', 'desc')
372: ->order('job_id', 'desc')
373: ->listMax($pageUnitCount)
374: ->current($page)
375: ->find();
376: }
377:
378: return false;
379: }
380:
381: /**
382: * Get Top Page data
383: *
384: * @return void
385: */
386: protected function getTopData()
387: {
388: // データ取得
389: // Get data
390:
391: // Search Jobs
392: $this->page['search_name'] = $this->in('search_name');
393: $this->page['search_search_name'] = $this->in('search_search_name');
394: $this->page['search_place'] = $this->in('search_place');
395: $this->page['search_store'] = $this->in('search_store');
396: $this->page['search_location_group'] = $this->in('search_location_group');
397: $this->page['search_pref'] = $this->in('search_pref');
398: $this->page['search_short_type'] = $this->in('search_short_type');
399:
400: $this->page['search_submit'] = $this->in('search_submit'); // テンプレート側で検索ボタンを押したかどうかの判断
401:
402: $this->page['data'] = $this->executeJobSearch(array('name' => $this->page['search_name'],
403: 'search_name' => $this->page['search_search_name'],
404: 'place' => $this->page['search_place'],
405: 'store' => $this->page['search_store'],
406: 'pref' => $this->page['search_pref'],
407: 'short_type' => $this->page['search_short_type']), $this->in('p'));
408:
409: // ページャーのデータを取得
410: // Get pager data
411: $this->page['pager'] = $this->_model_jobs->getPager();
412: $this->page['pageUnitCount'] = 60; // for
413:
414: if( $this->page['user']['is_user_search'] == 1 ){
415: // Get prefs
416: if( $this->page['user']['user_search_option'] & 1 ){
417: $userExistsPrefs = $this->_model_jobs
418: ->select('pref')
419: ->where('user_id = ? AND (visible = 1 OR visible = 99)', $this->_userData->getId())->group('pref')
420: ->listMax(9999)
421: ->simple_find();
422:
423: if( is_array($userExistsPrefs) && 0 < count($userExistsPrefs) ){
424: $existsPrefs = [];
425: foreach($userExistsPrefs as $userExistsPref){
426: $existsPrefs[] = $userExistsPref['pref'];
427: }
428:
429: $allLocationGroups = [
430: 'ht' => ['prefs' => [], 'allPrefs' => ['北海道', '青森県', '岩手県', '宮城県', '秋田県', '山形県', '福島県'], 'html' => '<div class="sp">北海道</div><div class="sp">東北</div><div class="pc">北海道・東北</div>', 't2_html' => '<span>北海道<br class="u-sp">・東北</span>'], // 北海道・東北
431: 'kt' => ['prefs' => [], 'allPrefs' => ['茨城県', '栃木県', '群馬県', '埼玉県', '千葉県', '東京都', '神奈川県'], 'html' => '<div>関東</div>', 't2_html' => '<span>関東</span>'], // 関東
432: 'hk' => ['prefs' => [], 'allPrefs' => ['新潟県', '富山県', '石川県', '福井県', '山梨県', '長野県'], 'html' => '<div class="sp">北陸</div><div class="sp">甲信越</div><div class="pc">北陸・甲信越</div>', 't2_html' => '<span>北陸<br class="u-sp">・甲信越</span>'], // 北陸・甲信越
433: 'tk' => ['prefs' => [], 'allPrefs' => ['岐阜県', '静岡県', '愛知県', '三重県'], 'html' => '<div>東海</div>', 't2_html' => '<span>東海</span>'], // 東海
434: 'ks' => ['prefs' => [], 'allPrefs' => ['滋賀県', '京都府', '大阪府', '兵庫県', '奈良県', '和歌山県'], 'html' => '<div>関西</div>', 't2_html' => '<span>関西</span>'], // 関西
435: 'cs' => ['prefs' => [], 'allPrefs' => ['鳥取県', '島根県', '岡山県', '広島県', '山口県', '徳島県', '香川県', '愛媛県', '高知県'], 'html' => '<div class="sp">中国</div><div class="sp">四国</div><div class="pc">中国・四国</div>', 't2_html' => '<span>中国<br class="u-sp">・四国</span>'], // 中国・四国
436: 'ko' => ['prefs' => [], 'allPrefs' => ['福岡県', '佐賀県', '長崎県', '熊本県', '大分県', '宮崎県', '鹿児島県', '沖縄県'], 'html' => '<div class="sp">九州</div><div class="sp">沖縄</div><div class="pc">九州・沖縄</div>', 't2_html' => '<span>九州<br class="u-sp">・沖縄</span>'] // 九州・沖縄
437: ];
438:
439: $this->page['locationGroups'] = [];
440: foreach($allLocationGroups as $locationGroupKey => $locationGroup){
441: $prefs = array_intersect($locationGroup['allPrefs'], $existsPrefs);
442: if( is_array($prefs) && 0 < count($prefs) ){
443: $locationGroup['prefs'] = $prefs;
444: $this->page['locationGroups'][$locationGroupKey] = $locationGroup;
445: }
446: }
447: }
448: }
449:
450: // Short Type
451: if( $this->page['user']['user_search_option'] & 2 ){
452: $userExistsShortTypes = $this->_model_jobs
453: ->select('short_type')
454: ->where('user_id = ? AND (visible = 1 OR visible = 99)', $this->_userData->getId())->group('short_type')
455: ->listMax(9999)
456: ->simple_find();
457:
458: $this->page['shortTypes'] = [];
459: foreach($userExistsShortTypes as $userExistsShortType){
460: $this->page['shortTypes'][$userExistsShortType['short_type']] = $userExistsShortType['short_type'];
461: }
462: }
463:
464: // Get job_name
465: if( $this->page['user']['user_search_option'] & 4 ){
466: $userExistsSearchNames = $this->_model_jobs
467: ->select('search_name')
468: ->where('user_id = ? AND (visible = 1 OR visible = 99)', $this->_userData->getId())->group('search_name')
469: ->listMax(9999)
470: ->simple_find();
471:
472: $jobName = $this->_model_job_name->select('text')->where('user_id = ?', $this->_userData->getId())->one();
473: if( isset($jobName['text']) ){
474: $this->page['jobNames'] = array_intersect(array_filter(preg_split('/\r\n|\r|\n/', $jobName['text']), function($value) { return 0 < strlen($value); }),
475: array_filter(array_column($userExistsSearchNames, 'search_name'), function($value) { return 0 < strlen($value); }));
476: if( is_array($this->page['jobNames']) ){
477: $this->page['jobNames'][] = 'その他';
478: } else {
479: $this->page['jobNames'] = ['その他'];
480: }
481: }
482: }
483:
484: // Get job_store
485: if( $this->page['user']['user_search_option'] & 8 ){
486: $userExistsStores = $this->_model_jobs
487: ->select('store')
488: ->where('user_id = ? AND (visible = 1 OR visible = 99)', $this->_userData->getId())->group('store')
489: ->listMax(9999)
490: ->simple_find();
491:
492: $jobStore = $this->_model_job_store->select('text, label')->where('user_id = ?', $this->_userData->getId())->one();
493: if( isset($jobStore['text']) ){
494: $this->page['jobStores'] = array_intersect(array_filter(preg_split('/\r\n|\r|\n/', $jobStore['text']), function($value) { return 0 < strlen($value); }),
495: array_filter(array_column($userExistsStores, 'store'), function($value) { return 0 < strlen($value); }));
496: if( is_array($this->page['jobStores']) ){
497: $this->page['jobStores'][] = 'その他';
498: } else {
499: $this->page['jobStores'] = ['その他'];
500: }
501: }
502:
503: if( isset($jobStore['label']) ){
504: $this->page['jobStoreLabel'] = $jobStore['label'];
505: }
506: }
507: }
508:
509: // データ取得
510: // Get data
511: if( $this->page['user']['html_template'] != 2 && $this->page['user']['html_template'] != 3 ){ // html_template == 2 の場合は parts と contact data は必要ない
512:
513: // Parts Data
514: $parts = $this->getClass('Parts');
515: $this->page['parts'] = $parts->getData($this->_userData->getId(), 0);
516:
517: // Contact Data
518: $actual_link = FEGG_CURRENT_DOMAIN.'/'.$this->page['user']['login'].'/'; // Get Displaying current page URL
519: $this->_getContactPageData(null, $actual_link);
520: }
521:
522: // 処理
523: if( $this->page['user']['login'] === 'builpo' ){
524: $this->displayPage( 'detail/index-user-builpo' );
525: } else {
526: if( 0 < $this->page['user']['html_template'] ){
527: $this->displayPage( 'detail/t' . $this->page['user']['html_template'] . '_index' );
528: } else {
529: $this->displayPage( 'detail/index' );
530: }
531: }
532: }
533:
534: protected function getAboutData($data_key = 'data', $html = true)
535: {
536: $model_about = new Model(false, array(
537: 'table' => 'cms_profile_about',
538: 'id' => 'profile_about_id',
539: ));
540: $this->page[$data_key] = $model_about->select('*')->where('user_id = ?', $this->_userData->getId())->order('profile_about_id', 'ASC')->listMax(9999)->simple_find();
541:
542: if( $html ){
543: $this->assignPickupData();
544:
545: if( 0 < $this->page['user']['html_template'] ){
546: $this->displayPage( 'detail/t' . $this->page['user']['html_template'] . '_about' );
547: } else {
548: $this->displayPage( 'detail/about' );
549: }
550: }
551: }
552:
553: protected function getBenefitData()
554: {
555: $model_benefit = new Model(false, array(
556: 'table' => 'cms_profile_benefit',
557: 'id' => 'profile_benefit_id',
558: ));
559:
560: if( $this->page['user']['html_template'] == 3 ){
561: $model_category_header = new Model(false, array(
562: 'table' => 'cms_category_header',
563: 'id' => 'category_header_id',
564: ));
565: $this->page['category_header_data'] = $model_category_header->select('image_id, description')->where('user_id = ? AND category_key = ?', [$this->_userData->getId(), 'benefit'])->one();
566:
567: $data = $model_benefit->select('cms_profile_benefit_category.profile_benefit_category_id AS category_id, cms_profile_benefit_category.name AS category_name, image_id, head, content')
568: ->join('cms_profile_benefit_category', 'inner', 'cms_profile_benefit_category.profile_benefit_category_id = cms_profile_benefit.profile_benefit_category_id')
569: ->where('cms_profile_benefit.user_id = ? AND cms_profile_benefit_category.valid = 1 AND cms_profile_benefit.valid = 1', $this->_userData->getId())
570: ->order('cms_profile_benefit.profile_benefit_category_id', 'ASC')->order('cms_profile_benefit.profile_benefit_id', 'ASC')->listMax(9999)->simple_find();
571: if( is_array($data) && 0 < count($data) ){
572: foreach($data as $item){
573: if( !isset($this->page['data'][$item['category_id']]) ){
574: $this->page['category_data'][$item['category_id']] = $item['category_name'];
575: $this->page['data'][$item['category_id']] = [];
576: }
577: $this->page['data'][$item['category_id']][] = $item;
578: }
579: }
580: } else {
581: $this->page['data'] = $model_benefit->select('image_id, head, content')->where('user_id = ?', $this->_userData->getId())->order('profile_benefit_id', 'ASC')->listMax(9999)->simple_find();
582: }
583:
584: $this->assignPickupData();
585:
586: if( 0 < $this->page['user']['html_template'] ){
587: $this->displayPage( 'detail/t' . $this->page['user']['html_template'] . '_benefit' );
588: } else {
589: $this->displayPage( 'detail/benefit' );
590: }
591: }
592:
593: protected function getVoiceData()
594: {
595: if( $this->page['user']['html_template'] == 3 ){
596: $model_category_header = new Model(false, array(
597: 'table' => 'cms_category_header',
598: 'id' => 'category_header_id',
599: ));
600: $this->page['category_header_data'] = $model_category_header->select('image_id, description')->where('user_id = ? AND category_key = ?', [$this->_userData->getId(), 'voice'])->one();
601: }
602:
603: $model_voice = new Model(false, array(
604: 'table' => 'cms_profile_voice',
605: 'id' => 'profile_voice_id',
606: ));
607: $this->page['data'] = $model_voice->select('*')->where('user_id = ?', $this->_userData->getId())->order('profile_voice_id', 'ASC')->listMax(9)->current($this->in('p'))->find();
608: $this->page['pager'] = $model_voice->getPager();
609:
610: $this->assignPickupData();
611:
612: if( 0 < $this->page['user']['html_template'] ){
613: $this->displayPage( 'detail/t' . $this->page['user']['html_template'] . '_voice' );
614: } else {
615: $this->displayPage( 'detail/voice' );
616: }
617: }
618:
619: protected function getVoiceDetailData($voiceId)
620: {
621: if( $this->page['user']['html_template'] == 3 ){
622: $model_category_header = new Model(false, array(
623: 'table' => 'cms_category_header',
624: 'id' => 'category_header_id',
625: ));
626: $this->page['category_header_data'] = $model_category_header->select('image_id, description')->where('user_id = ? AND category_key = ?', [$this->_userData->getId(), 'voice'])->one();
627: }
628:
629: $model_voice = new Model(false, array(
630: 'table' => 'cms_profile_voice',
631: 'id' => 'profile_voice_id',
632: ));
633: $this->page['data'] = $model_voice->select('*')->where('user_id = ? AND profile_voice_id = ?', [$this->_userData->getId(), $voiceId])->one();
634: if( isset($this->page['data']) && is_array($this->page['data']) ){
635: $this->assignPickupData();
636:
637: if( 0 < $this->page['user']['html_template'] ){
638: $this->displayPage( 'detail/t' . $this->page['user']['html_template'] . '_voice-detail' );
639: } else {
640: $this->displayPage( 'detail/voice-detail' );
641: }
642: } else {
643: return $this->redirect($this->_userData->getLogin() . '/voice.html#intro');
644: }
645: }
646:
647: protected function getDataData()
648: {
649: if( $this->page['user']['html_template'] == 3 ){
650: $model_category_header = new Model(false, array(
651: 'table' => 'cms_category_header',
652: 'id' => 'category_header_id',
653: ));
654: $this->page['category_header_data'] = $model_category_header->select('image_id, description')->where('user_id = ? AND category_key = ?', [$this->_userData->getId(), 'data'])->one();
655: }
656:
657: $model_data = new Model(false, array(
658: 'table' => 'cms_profile_data',
659: 'id' => 'profile_data_id',
660: ));
661: $this->page['data'] = $model_data->select('*')->where('user_id = ?', $this->_userData->getId())->order('profile_data_id', 'ASC')->listMax(9999)->simple_find();
662:
663: $this->assignPickupData();
664:
665: if( 0 < $this->page['user']['html_template'] ){
666: $this->displayPage( 'detail/t' . $this->page['user']['html_template'] . '_data' );
667: } else {
668: $this->displayPage( 'detail/data' );
669: }
670: }
671:
672: protected function getPhotoData()
673: {
674: if( $this->page['user']['html_template'] == 3 ){
675: $model_category_header = new Model(false, array(
676: 'table' => 'cms_category_header',
677: 'id' => 'category_header_id',
678: ));
679: $this->page['category_header_data'] = $model_category_header->select('image_id, description')->where('user_id = ? AND category_key = ?', [$this->_userData->getId(), 'photo'])->one();
680: }
681:
682: $model_photo = new Model(false, array(
683: 'table' => 'cms_profile_photo',
684: 'id' => 'profile_photo_id',
685: ));
686: $this->page['data'] = $model_photo->select('*')->where('user_id = ?', $this->_userData->getId())->order('profile_photo_id', 'ASC')->listMax(9)->current($this->in('p'))->find();
687: $this->page['pager'] = $model_photo->getPager();
688:
689: $this->assignPickupData();
690:
691: if( 0 < $this->page['user']['html_template'] ){
692: $this->displayPage( 'detail/t' . $this->page['user']['html_template'] . '_photo' );
693: } else {
694: $this->displayPage( 'detail/photo' );
695: }
696: }
697:
698: protected function getProfileData()
699: {
700: if( $this->page['user']['html_template'] == 3 ){
701: $model_category_header = new Model(false, array(
702: 'table' => 'cms_category_header',
703: 'id' => 'category_header_id',
704: ));
705: $this->page['category_header_data'] = $model_category_header->select('image_id, description')->where('user_id = ? AND category_key = ?', [$this->_userData->getId(), 'profile'])->one();
706: }
707:
708: $this->assignPickupData();
709:
710: if( 0 < $this->page['user']['html_template'] ){
711: $this->displayPage( 'detail/t' . $this->page['user']['html_template'] . '_profile' );
712: } else {
713: $this->displayPage( 'detail/profile' );
714: }
715: }
716:
717: /**
718: * Get Top Page data
719: *
720: * @return void
721: */
722: protected function getTopDataJobs($page)
723: {
724: // データ取得
725: // Get data
726:
727: // Search Jobs
728: $this->page['search_name'] = $this->in('search_name');
729: $this->page['search_search_name'] = $this->in('search_search_name');
730: $this->page['search_place'] = $this->in('search_place');
731: $this->page['search_store'] = $this->in('search_store');
732: $this->page['search_pref'] = $this->in('search_pref');
733: $this->page['search_short_type'] = $this->in('search_short_type');
734:
735: $this->executeJobSearch(array('name' => $this->page['search_name'],
736: 'search_name' => $this->page['search_search_name'],
737: 'place' => $this->page['search_place'],
738: 'store' => $this->page['search_store'],
739: 'pref' => $this->page['search_pref'],
740: 'short_type' => $this->page['search_short_type']), $page);
741:
742: // 処理
743: $this->displayPage( 'detail/template/jobs_list' );
744: }
745:
746: /**
747: * Get Detail Page Data
748: *
749: * @param int $externalId
750: * @return void
751: */
752: protected function getDetailPageData($externalId)
753: {
754: // Get Job data
755: $this->page['data'] =
756: $this->_model_jobs
757: ->select('*, usual_name AS selected_name')
758: ->where('user_id = ?', $this->_userData->getId())
759: ->where('external_job_id = ?', $externalId)
760: ->where('(visible = 1 OR visible = 99)')
761: ->one();
762:
763: // If not Exists target Job Information
764: // Redirect to company top
765: if(! $this->page['data']) {
766: // 履歴から捜す
767: $external_job_id_history = $this->_model_external_job_id_history->select('(SELECT external_job_id FROM cms_job AS current WHERE current.job_id = cms_external_job_id_history.job_id AND (visible = 1 OR visible = 99) AND valid = 1 LIMIT 1) AS external_job_id')
768: ->where('user_id = ?', $this->_userData->getId())
769: ->where('external_job_id = ?', $externalId)
770: ->one();
771:
772: if($external_job_id_history && is_array($external_job_id_history) && isset($external_job_id_history['external_job_id']) && $external_job_id_history['external_job_id'] ){
773: return $this->redirect($this->_userData->getLogin() . '/detail/post_'.$external_job_id_history['external_job_id'].'.html');
774: } else {
775: return $this->redirect($this->_userData->getLogin() . '/');
776: }
777: }
778:
779: // for url date_post
780: $this->page['external_job_id_data'] = $this->_model_external_job_id_history
781: ->where('user_id = ?', $this->_userData->getId())
782: ->where('external_job_id = ?', $externalId)
783: ->one();
784:
785: // Displaying current page URL
786: //$actual_link = FEGG_CURRENT_DOMAIN.'/'.$this->page['user']['login'].'/detail/post_'.$this->page['data'][$this->page['id']].'.html';
787: $actual_link = FEGG_CURRENT_DOMAIN.'/'.$this->page['user']['login'].'/detail/post_'.$externalId.'.html';
788:
789: $this->_getDetailPageData($this->page['data']['job_id'], $actual_link);
790: }
791:
792: /**
793: * Get Detail Page Data
794: *
795: * @param int $internalId
796: * @param string $secret
797: * @return void
798: */
799: protected function getDetailPageDataSecret($internalId, $secret)
800: {
801: // Get Job data
802: $secretExpire = (isset($this->config['site_info']['secret_expire'])) ? $this->config['site_info']['secret_expire'] : '10 DAY';
803: $this->page['data'] =
804: $this->_model_jobs
805: ->select('*, usual_name AS selected_name')
806: ->where('user_id = ?', $this->_userData->getId())
807: ->where('job_id = ?', $internalId)
808: ->where('DATE_SUB(now(), INTERVAL '.$secretExpire.') < secret_created')
809: ->one();
810:
811: if( $this->page['data'] && hash('sha256', $this->page['data']['job_id'] . $this->page['data']['secret_created']) === $secret ){
812: // Displaying current page URL
813: $actual_link = FEGG_CURRENT_DOMAIN.'/'.$this->page['user']['login'].'/detail/secret_'.$internalId.'.html?secret='.$secret;
814:
815: $this->_getDetailPageData($this->page['data']['job_id'], $actual_link);
816: } else {
817: header('HTTP/1.0 404 Not Found');
818: echo "Secret Not Found.<br/>";
819: exit;
820: }
821: }
822:
823: /**
824: * Display Contact Page Data
825: *
826: * @param int $externalId
827: * @return void
828: */
829: protected function _getContactPageData($jobId, $actual_link)
830: {
831:
832: // For Displaying current page URL
833: $this->page['actual_link'] = $actual_link;
834: $this->setHidden('actual_link', $actual_link);
835:
836: // application form
837: //if( $this->getSession( 'contact_form' ) ) {
838: // $this->page['contact_data'] = $this->getSession( 'contact_form' );
839: // $this->unsetSession( 'contact_form' );
840: //}
841:
842: //$this->setTicket( 'contact' );
843: //$this->setSession( 'contact_referer', array('referer' => (isset($_SERVER['HTTP_REFERER'])) ? $_SERVER['HTTP_REFERER'] : NULL));
844:
845: // Get Mail data
846: $this->page['mail']
847: = $this->_model_mail
848: ->current($this->in('p'))
849: ->where('user_id = ?', $this->_userData->getId())
850: ->one();
851:
852: if(isset($this->page['data']['mailaddress']) && $this->page['data']['mailaddress']) {
853: $this->setHidden('mail_to', str_rot13(base64_encode($this->page['data']['mailaddress'])));
854: }
855: //if(isset($this->page['data']['job_id']) && $this->page['data']['job_id']) {
856: if( $jobId ){
857: $this->setHidden('job_id', $jobId);
858: }
859: if(isset($this->page['data']['recruit_id']) && $this->page['data']['recruit_id']) {
860: $this->setHidden('recruit_id', $this->page['data']['recruit_id']);
861: }
862:
863: // For contact application control_number
864: if(isset($this->page['data']['control_number']) && $this->page['data']['control_number']) {
865: $this->page['contact_data']['control_number'] = $this->page['data']['control_number'];
866: }
867:
868: // For contact application abtest_variant_code
869: if(isset($this->page['data']['abtest_variant_code']) && $this->page['data']['abtest_variant_code']) {
870: $this->page['contact_data']['abtest_variant_code'] = $this->page['data']['abtest_variant_code'];
871: }
872:
873: // For contact application input area
874: if(isset($this->page['data']['usual_name']) && $this->page['data']['usual_name']){
875: $this->page['contact_data']['application'] = $this->page['data']['usual_name'];
876: }
877:
878: // For select box: years
879: $years = array_combine(range(1952,date('Y')), range(1952,date('Y')));
880: $this->page['years'] = $years;
881:
882: // For select box: months
883: $months = array_combine(range(1,12), range(1,12));
884: $this->page['months'] = $months;
885:
886: // For select box: days
887: $days = array_combine(range(1,31), range(1,31));
888: $this->page['days'] = $days;
889:
890: // For privacy_policy
891: $privacy_policy_rep = array();
892: $privacy_policy_rep[0] = $this->page['user']['name'];
893:
894: if(isset($this->page['data']['phone']) && $this->page['data']['phone']){
895: $privacy_policy_rep[1] = $this->page['data']['phone'];
896: } else {
897: $privacy_policy_rep[1] = $this->page['user']['phone'];
898: }
899: if( isset($this->page['user']['privacy_policy']) && $this->page['user']['privacy_policy'] && !preg_match('/^(\s| |\r|\n|\r\n)*$/su', $this->page['user']['privacy_policy']) ){
900: $this->page['user']['privacy_policy'] = preg_replace(array('/%user_name%/', '/%phone%/'), $privacy_policy_rep, $this->page['user']['privacy_policy']);
901: } else {
902: $this->page['user']['privacy_policy'] = preg_replace(array('/%user_name%/', '/%phone%/'), $privacy_policy_rep, AbstractController::$_privacy_policy);
903: }
904:
905: if( empty($this->page['contact_data']['year']) && empty($this->page['contact_data']['month']) && empty($this->page['contact_data']['day']) ){
906: if( !isset($this->page['contact_data']) || !is_array($this->page['contact_data']) ) $this->page['contact_data'] = array();
907: $this->page['contact_data']['year'] = 1998;
908: }
909: }
910:
911: /**
912: * Display Detail Page Data
913: *
914: * @param int $externalId
915: * @return void
916: */
917: protected function _getDetailPageData($internalId, $actual_link)
918: {
919: // Get Parts data
920: $parts = $this->getClass('Parts');
921: $this->page['parts'] = $parts->getData($this->_userData->getId(), $internalId);
922:
923: if( $this->page['user']['html_template'] == 2 || $this->page['user']['html_template'] == 3 ){
924: $medias = $this->_model_medias->select('media_role, media_title, media_type, image_id, youtube_url')->where('job_id = ? AND valid = 1', $internalId)->order('order_by', 'ASC')->simple_find();
925: } else {
926: $medias = $this->_model_medias->select('media_role, media_title, media_type, image_id, youtube_url')->where('job_id = ? AND (media_role = \'main\' OR media_role = \'youtube\') AND valid = 1', $internalId)->order('order_by', 'ASC')->simple_find();
927: }
928:
929: if( is_array($medias) && 0 < count($medias) ){
930: $this->page['data']['main_images'] = array();
931: foreach($medias as $media){
932: if( $media['media_role'] === 'main' ){
933: $this->page['data']['main_images'][] = $media['image_id'];
934:
935: } else if( $media['media_role'] === 'youtube' ){
936: $this->page['data']['youtube_url'] = $media['youtube_url'];
937:
938: } else {
939: if( $this->page['user']['html_template'] == 2 || $this->page['user']['html_template'] == 3 ){
940: foreach(array('job', 'culture', 'welfare') as $role){
941: if( $media['media_role'] === $role ){
942: $this->page['data'][$role . '_media_title'] = $media['media_title'];
943: $this->page['data'][$role . '_media_type'] = $media['media_type'];
944: if( $media['media_type'] == 1 ){
945: $this->page['data'][$role . '_image_id'] = $media['image_id'];
946: } else if( $media['media_type'] == 2 ){
947: $this->page['data'][$role . '_youtube_url'] = $media['youtube_url'];
948: }
949: }
950: }
951: }
952: }
953: }
954: }
955:
956: // Get Job list data
957: $this->page['list_data']
958: = $this->_model_jobs
959: ->listMax(3)//3
960: ->current($this->in('p'))
961: ->select('*, usual_name AS selected_name, (SELECT image_id FROM cms_job_media AS tm WHERE tm.job_id = cms_job.job_id AND tm.media_role = \'main\' and tm.valid = 1 ORDER BY tm.order_by ASC LIMIT 1) AS main_image_id')
962: ->where('job_id != ?', $internalId)
963: ->where('user_id = ?', $this->_userData->getId())
964: ->where('priority_flag = ?', 1)
965: ->order('post_date', 'desc')
966: ->simple_find();
967:
968: if($this->page['user']['job_schema_version'] == 2){
969: // Get Category list data
970: $this->page['categories']
971: = $this->_model_categories
972: ->listMax(9999)
973: ->select('name')
974: ->where('job_id =?', $internalId)
975: ->order('order_by', 'asc')
976: ->simple_find();
977:
978: // Get Tag list data
979: $this->page['occupations']
980: = $this->_model_occupations
981: ->listMax(9999)
982: ->select('suid')
983: ->where('job_id =?', $internalId)
984: ->order('order_by', 'asc')
985: ->simple_find();
986:
987: // Get Tag list data
988: $this->page['searches']
989: = $this->_model_searches
990: ->listMax(9999)
991: ->select('suid')
992: ->where('job_id =?', $internalId)
993: ->order('order_by', 'asc')
994: ->simple_find();
995:
996: } else if($this->page['user']['job_schema_version'] == 1){
997: // Get Category list data
998: $this->page['categories']
999: = $this->_model_categories
1000: ->listMax(9999)
1001: ->select('name')
1002: ->where('job_id =?', $internalId)
1003: ->order('order_by', 'asc')
1004: ->simple_find();
1005:
1006: // Get Tag list data
1007: $this->page['keywords']
1008: = $this->_model_keywords
1009: ->listMax(9999)
1010: ->select('name')
1011: ->where('job_id =?', $internalId)
1012: ->order('order_by', 'asc')
1013: ->simple_find();
1014: } else {
1015: // Obsolete
1016: // Get Tag list data
1017: $this->page['tags']
1018: = $this->_model_tags
1019: ->listMax(9999)
1020: ->select('name')
1021: ->where('job_id =?', $internalId)
1022: ->order('order_by', 'asc')
1023: ->simple_find();
1024: }
1025:
1026: // Contact html_template が 2 or 3 の場合は form 画面が分離しているので読み込む必要がない
1027: if( $this->page['user']['html_template'] != 2 && $this->page['user']['html_template'] != 3 ){
1028: $this->_getContactPageData($internalId, $actual_link);
1029: }
1030:
1031: // LD+JSON
1032: $ldJson = array("@context" => "http://schema.org/", "@type" => "JobPosting");
1033:
1034: // datePosted
1035: $ldJson["datePosted"] = ( isset($this->page['external_job_id_data']['created']) ) ? $this->page['external_job_id_data']['created'] : $this->page['data']['post_date'];
1036:
1037: //description
1038: if( $this->page['user']['job_schema_version'] == 2 ){
1039: $category_info = $this->loadConfig('category_info');
1040:
1041: if( isset($this->page['occupations']) && is_array($this->page['occupations']) && 0 < count($this->page['occupations']) ){
1042: $this->page['occupationsString'] = implode(' / ', array_map(function($occupation) use($category_info) {
1043: foreach($category_info['job_occupations'] as $category){
1044: if( isset($category[$occupation['suid']][0]) ) return $category[$occupation['suid']][0];
1045: }
1046: return '';
1047: }, $this->page['occupations']));
1048: }
1049:
1050: if( isset($this->page['searches']) && is_array($this->page['searches']) && 0 < count($this->page['searches']) ){
1051: $this->page['searchesString'] = implode(' / ', array_map(function($search) use($category_info) { return (isset($category_info['job_searches'][$search['suid']])) ? $category_info['job_searches'][$search['suid']] : '';}, $this->page['searches']));
1052: // 嘱託社員用
1053: $this->page['search_9HCQR'] = !empty(array_filter($this->page['searches'], function($search){ return $search['suid'] === '9HCQR'; }));
1054: }
1055: $ldJson['description'] = $this->fetchPage('detail/template/schema2_json_ld_description');
1056:
1057: } else {
1058: if( isset($this->page['keywords']) && is_array($this->page['keywords']) && 0 < count($this->page['keywords']) ){
1059: $this->page['keywordsString'] = implode(' / ', array_map(function($keyword){ return $keyword['name'];}, $this->page['keywords']));
1060: }
1061: $ldJson['description'] = $this->fetchPage('detail/template/json_ld_description');
1062: }
1063:
1064: // hiringOrganization
1065: $ldJson["hiringOrganization"] = array("@type" => "Organization",
1066: "name" => removeBreakLine($this->page['user']['name']),
1067: "sameAs" => FEGG_CURRENT_URL . '/' . $this->page['user']['login'],
1068: "logo" => FEGG_CURRENT_URL . '/images/kyujinbu-logo.png');
1069:
1070: // jobLocation
1071: $ldJson["jobLocation"] = array("@type" => "Place");
1072: $jobLocationAddress = array("@type" => "PostalAddress",
1073: "streetAddress" => removeBreakLine($this->page['data']['city'] . $this->page['data']['place']),
1074: "addressLocality" => removeBreakLine($this->page['data']['place_remark']),
1075: "addressRegion" => $this->page['data']['pref'],
1076: "postalCode" => $this->page['data']['postalcode'],
1077: "addressCountry" => "JP");
1078:
1079: if ($this->page['data']['work_latlng']) {
1080: $geo = explode(",", $this->page['data']['work_latlng']);
1081: if(is_array($geo) && count($geo) == 2){
1082: $address["geo"] = array(
1083: "@type" => "GeoCoordinates",
1084: "latitude" => trim($geo[0]),
1085: "longitude" => trim($geo[1]));
1086: }
1087: }
1088:
1089: $ldJson["jobLocation"]["address"] = $jobLocationAddress;
1090:
1091: // title
1092: $ldJson["title"] = removeBreakLine($this->page['data']['selected_name']);
1093:
1094: // baseSalary
1095: if( isset($this->page['data']['salary_amount']) && isset($this->page['data']['salary_amount_max'])
1096: && $this->page['data']['salary_amount'] && $this->page['data']['salary_amount_max'] ){
1097: $baseSalaryValue = array("@type" => "QuantitativeValue");
1098: if($this->page['data']['salary_amount'] && $this->page['data']['salary_amount'] == $this->page['data']['salary_amount_max']){
1099: $baseSalaryValue["value"] = $this->page['data']['salary_amount'];
1100: } else {
1101: $baseSalaryValue["minValue"] = $this->page['data']['salary_amount'];
1102: $baseSalaryValue["maxValue"] = $this->page['data']['salary_amount_max'];
1103: }
1104:
1105: $baseSalaryValue['unitText'] = ( isset($this->page['data']['salary_type']) ) ? $this->page['data']['salary_type'] : null;
1106:
1107: $ldJson["baseSalary"] = array("@type" => "MonetaryAmount", "currency" => "JPY", "value" => $baseSalaryValue);
1108: }
1109:
1110: $ldJson['directApply'] = true;
1111:
1112: // employmentType
1113: if( $this->page['user']['job_schema_version'] == 2 ){
1114: if ($this->page['data']['short_type']) {
1115: switch($this->page['data']['short_type']){
1116: case '5QWDV': // '正社員',
1117: $ldJson["employmentType"] = 'FULL_TIME';
1118: break;
1119:
1120: case '75GKK': // 'アルバイト・パート',
1121: $ldJson["employmentType"] = 'PART_TIME';
1122: break;
1123:
1124: case '8YWGX': // '派遣社員',
1125: $ldJson["employmentType"] = 'TEMPORARY';
1126: break;
1127:
1128: case 'T65DZ': // '業務委託'
1129: case 'T9BXE': // '契約社員'
1130: case 'T65DZ_QDAPK': // '業務委託(完全歩合)'
1131: $ldJson["employmentType"] = 'CONTRACTOR';
1132: break;
1133:
1134: default:
1135: $ldJson["employmentType"] = 'OTHER';
1136: }
1137: }
1138:
1139: } else {
1140: if ($this->page['data']['short_type']) {
1141: switch($this->page['data']['short_type']){
1142: case "正社員":
1143: case "新卒":
1144: $ldJson["employmentType"] = 'FULL_TIME';
1145: break;
1146:
1147: case "アルバイト・パート":
1148: case "嘱託社員":
1149: $ldJson["employmentType"] = 'PART_TIME';
1150: break;
1151:
1152: case "派遣社員":
1153: $ldJson["employmentType"] = 'TEMPORARY';
1154: break;
1155:
1156: case "請負":
1157: case "契約社員":
1158: case "業務委託":
1159: $ldJson["employmentType"] = 'CONTRACTOR';
1160: break;
1161:
1162: case "インターン":
1163: $ldJson["employmentType"] = 'INTERN';
1164: break;
1165:
1166: case "ボランティア":
1167: $ldJson["employmentType"] = 'VOLUNTEER';
1168: break;
1169:
1170: default:
1171: $ldJson["employmentType"] = 'OTHER';
1172: }
1173: }
1174: }
1175:
1176: // identifier
1177: $ldJson["identifier"] = array(
1178: "@type" => "PropertyValue",
1179: "name" => removeBreakLine($this->page['user']['name']),
1180: "value" => array('@type' => 'URL', 'url' => FEGG_CURRENT_DOMAIN.'/'.$this->page['user']['login'].'/'));
1181:
1182: //if("experienceRequirements" : {
1183: /*
1184: "experienceRequirements" : {
1185: "@type" : "Text",
1186: "description": "{{ if $this->page['data']['qualification }}{{ $this->page['data']['qualification|removeBreakLine }}{{ end }}{{ if $this->page['data']['education }} 最終学歴 {{ $this->page['data']['education|removeBreakLine }}{{ end }}{{ if $this->page['data']['experience }} 望ましい経験 {{ $this->page['data']['experience|removeBreakLine }}{{ end }}"
1187: },
1188: */
1189:
1190: //$ldJson["responsibilities"] = $this->page['data']['description|noescape|br|removeBreakLine
1191: //$ldJson["salaryCurrency"] = "JPY";
1192:
1193: //$ldJson["workHours"] = removeBreakLine($this->page['data']['time);
1194:
1195: //$ldJson["image"] = getImageUrl($define.FEGG_CURRENT_URL . '/' . $this->page['data']['main_image_id);
1196: //$ldJson["url"] = $this->page['actual_link;
1197:
1198: // $this->page['data'][']['main_image_id'] = FEGG_CURRENT_URL.'/'.getImageUrl($this->page['data'][']['main_image_id']);
1199:
1200: // finally encode as json.
1201: $this->page['data']['json_ld'] = json_encode($ldJson);
1202:
1203: // google map 向け
1204: if ($this->page['data']['work_latlng']) {
1205: $geo = explode(",", $this->page['data']['work_latlng']);
1206: if(is_array($geo) && count($geo) == 2){
1207: $this->page['latitude'] = trim($geo[0]);
1208: $this->page['longitude'] = trim($geo[1]);
1209: }
1210: }
1211:
1212: if($this->page['user']['job_schema_version'] == 2){
1213: if( 0 < $this->page['user']['html_template'] ){
1214: $this->displayPage('detail/schema2_t' . $this->page['user']['html_template'] . '_detail');
1215: } else {
1216: $this->displayPage('detail/schema2_detail');
1217: }
1218:
1219: } else {
1220: if( $this->page['user']['html_template'] == 1 ){
1221: $this->displayPage('detail/t1_detail');
1222: } else {
1223: $this->displayPage('detail/detail');
1224: }
1225: }
1226: }
1227:
1228: /**
1229: * Get XML Feed data
1230: *
1231: * @return void
1232: */
1233: protected function getXMLFeedData($mode)
1234: {
1235: $limit = null;
1236: if ( $this->in('_limit') ){
1237: $limit = (int)$this->in('_limit');
1238: }
1239:
1240: if ($mode === 'indeed') {
1241: $this->getClass('IndeedFeed');
1242: $this->loadConfig( 'site_info' );
1243: $options = array('user_id' => $this->_userData->getId(),
1244: 'indeed' => $this->config[ 'site_info' ]['indeed'],
1245: 'include_indeed' => true);
1246: $indeedFeed = new IndeedFeed($options);
1247: $indeedFeed->displayFeed($serviceKey = 'indeed', $templateKey = 'indeed', array('limit' => $limit));
1248:
1249: } else if ($mode === 'stanby') {
1250: $this->getClass('IndeedFeed');
1251: $this->loadConfig( 'site_info' );
1252: $options = array('user_id' => $this->_userData->getId());
1253: $indeedFeed = new IndeedFeed($options);
1254: $indeedFeed->displayFeed($serviceKey = 'stanby', $template = 'stanby', array('limit' => $limit));
1255:
1256: } else if ($mode === 'careerjet') {
1257: $this->getClass('IndeedFeed');
1258: $this->loadConfig( 'site_info' );
1259: $options = array('user_id' => $this->_userData->getId());
1260: $indeedFeed = new IndeedFeed($options);
1261: $indeedFeed->displayFeed($serviceKey = 'careerjet', $templateKey = 'indeed', array('limit' => $limit));
1262:
1263: } else if($mode === 'kyujinbox' || $mode === null ){
1264: $this->getClass('KyujinboxFeed');
1265: $options = array('user_id' => $this->_userData->getId());
1266: $kyujinboxFeed = new KyujinboxFeed($options);
1267: $kyujinboxFeed->displayFeed($serviceKey = 'kyujinbox', $templateKey = 'kyujinbox', array('limit' => $limit));
1268:
1269: } else {
1270: throw new Exception('Target feed Not found');
1271: }
1272: }
1273: }
1274: