/** * Gets the Time * @return */ function GetClock() { $db =& $this->db; $response = new ResponseManager(); $datemanager = new DateManager($db); $output = $datemanager->GetClock(); $response->SetFormRequestResponse($output, __('Date / Time Information'), '480px', '240px'); $response->clockUpdate = true; $response->success = false; $response->Respond(); }
/** * 実行 */ protected function perform() { // 案件ID $ankenId = $this->_request['aid']; // モデル $m =& $this->_model; // 基本情報 $anken =& $m->getAnkenData($ankenId); $this->appendDataFrom($anken); // ログインクライアントIDチェック if ($this->_core->getLoginKind() == 'client' && $this->_loginClientId != $anken['client_id']) { throw new RequestParamsException('ログインクライアントIDと要求したクライアントIDが一致しません。'); } // 締め日 $shime = $anken['shime_date']; // キャンペーン期間 $from = $anken['campaign_from']; $to = $anken['campaign_to']; // 空の期間配列を作成 $blank = DateManager::getArrayShimeSpan($ankenId, $from, $to, $shime); // 集計 $data =& $m->Result_ClientReportResult_counting($anken, $blank); // テンプレートに渡す $this->_dataFrom['list'] =& $data; /////////////////////////////////////////////// // UPLOAD用のフォームのカスタム処理 /////////////////////////////////////////////// $path = $m->Result_ClientReportResult_getUploadFormTmplPath($ankenId); $this->_dataFrom["upform_path"] = $path; /////////////////////////////////////////////// // 拡張リンク用のカスタム処理 /////////////////////////////////////////////// $tmpl = $m->Result_ClientReportResult_getExtraLinkTmplPath($ankenId); $this->_dataFrom["extra_link_path"] = $tmpl; }
/** * 対象案件の売上と支払を、締め日区切りで集計します */ function &getSummaryDataGroupByShimebi(&$db, &$anken) { $code = $anken['campaign_code']; $ankenId = $anken['anken_id']; $campaignFrom = $anken['campaign_from']; $campaignTo = $anken['campaign_to']; $shime = $anken['shime_date']; // 締め日区切りの配列を取得 // 締め日から締め日を from, to で配列にする $span =& DateManager::getArrayShimeSpan($ankenId, $campaignFrom, $campaignTo, $shime); // 戻り値用配列を初期化 $total = array(); // 期間ごとに処理 foreach ($span as $key => $value) { // 条件配列を初期化 $like = array(); // 対象期間(締め日区切り) $like['from'] = $value['from']; $like['to'] = $value['to']; // 集計オブジェクトを取得 $client =& ListSummaryManager::createForClient($ankenId, $db, $code, $like); $media =& ListSummaryManager::createForMedia($ankenId, $db, $code, $like); $year = date('Y', strtotime($like['from'])); $month = date('m', strtotime($like['from'])); $total[$year][$month]['input'] = $client->getAmountReward(); $total[$year][$month]['output'] = $media->getAmountReward(); } return $total; }
public static function save($code, $value, $lang = null) { // Save specific locale value by given key if (!$lang) { $lang = self::getLanguage(); } // Check if locale already exists $sql = new SqlManager(); $sql->setQuery("\n\t\t\tSELECT code FROM locale \n\t\t\tWHERE code = '{{code}}' \n\t\t\tAND language = {{lang}}\n\t\t\tLIMIT 1"); $sql->bindParam('{{code}}', $code); $sql->bindParam('{{lang}}', $lang, "int"); $check = $sql->result(); $loc = array('code' => $sql->escape($code), 'language' => $sql->escape($lang, "int"), 'text' => $sql->escape($value), 'lastchanged' => DateManager::now()); // Either update database or insert new entry for given locale if (!$check['code']) { $loc['created'] = DateManager::now(); $sql->insert("locale", $loc); } else { $sql->update("locale", $loc); } // Refresh cache to make sure new locale entry will be used $cachekey = "locale:" . $lang; Cache::clear($cachekey); self::load($lang); }
/** * 実行 */ protected function perform() { // 案件ID $ankenId = $this->_request['aid']; // モデル $m =& $this->_model; // 基本情報 $anken =& $m->getAnkenData($ankenId); $this->appendDataFrom($anken); // ログインクライアントIDチェック if ($this->_core->getLoginKind() == 'client' && $this->_loginClientId != $anken['client_id']) { throw new RequestParamsException('ログインクライアントIDと要求したクライアントIDが一致しません。'); } // 締め日 $shime = $anken['shime_date']; // キャンペーン期間 $from = $anken['campaign_from']; $to = $anken['campaign_to']; // 空の期間配列を作成 $blank = DateManager::getArrayShimeSpan($ankenId, $from, $to, $shime); // 集計 $data =& $m->Result_ClientReportResult_counting($anken, $blank); // テンプレートに渡す $this->_dataFrom['list'] =& $data; // 案件情報のアクションID対応の値 $enum = new AcceptUseActionIdEnum(); $this->_dataFrom["accept_use_action"] = $enum->getKey('アクションID'); // 案件情報の定率対応の値 $enum = new PriceTypeCdEnum(); $this->_dataFrom["price_use_rate"] = $enum->getKey('定率'); //--------------------------------------- // UPLOAD用のフォームのカスタム処理 //--------------------------------------- $path = $m->Result_ClientReportResult_getUploadFormTmplPath($ankenId); $this->_dataFrom["upform_path"] = $path; //--------------------------------------- // CSVの追加オプション表示 //--------------------------------------- $this->_dataFrom["add_option_name"] = $m->Result_ClientReportResult_getAddLabelForUploadForm($ankenId); //--------------------------------------- // 流通売上合計金額表示設定の表示 //--------------------------------------- $this->_dataFrom["sales_distribution_amount_flg"] = $m->Result_ClientReportResult_GetSalesDistributionAmountFlag($ankenId); //--------------------------------------- // フッターのリンク //--------------------------------------- $tmpl = $m->getExtraLinkTmplPath($ankenId); $this->_dataFrom["extra_link_path"] = $tmpl; //--------------------------------------- // レポートの表示/非表示制御 //--------------------------------------- $this->_dataFrom["disp"] =& $m->getReportDisp($ankenId, $this->_core->getLoginKind()); }
/** * Get a local date * @param int $timestamp * @param string $format * @param bool $allowInternational * @return bool|string */ public static function getLocalDate($timestamp = NULL, $format = NULL, $allowInternational = true) { if ($timestamp == NULL) { $timestamp = time(); } if ($format == NULL) { $format = DateManager::getDefaultFormat(); } if (DateManager::getCalendarType() == 'Jalali') { return JDateTime::date($format, $timestamp, false); } else { // Do we have the international date formatter? if ($allowInternational && Config::GetSetting('USE_INTL_DATEFORMAT') == 1 && Config::CheckIntlDateFormat()) { $formatter = new IntlDateFormatter(Config::GetSetting('DEFAULT_LANGUAGE'), IntlDateFormatter::FULL, IntlDateFormatter::FULL, Config::GetSetting('DEFAULT_TIMEZONE'), IntlDateFormatter::GREGORIAN, $format); return $formatter->format($timestamp); } else { return date($format, $timestamp); } } }
private function create() { // Create a new session $this->id = session_id(); // And write session into database $insert = array("phpkey" => $this->id, "created" => DateManager::now()); $sql = new SqlManager(); $sql->insert("session", $insert); // Save data in instance $this->data = $insert; $this->data['id'] = $sql->getLastInsertID(); // Write meta data into database foreach ($_SERVER as $key => $value) { Meta::save("session", $this->data['id'], $key, $value); } // Set login status $this->loggedin = false; // Create user and config object for session $this->user = new User(); $this->config = new Config(); }
function Grid() { $db =& $this->db; $response = new ResponseManager(); $type = Kit::GetParam('filter_type', _POST, _WORD); $fromDt = Kit::GetParam('filter_fromdt', _POST, _STRING); setSession('sessions', 'Filter', Kit::GetParam('XiboFilterPinned', _REQUEST, _CHECKBOX, 'off')); setSession('sessions', 'filter_type', $type); setSession('sessions', 'filter_fromdt', $fromDt); $SQL = "SELECT session.userID, user.UserName, IsExpired, LastPage, session.LastAccessed, RemoteAddr, UserAgent "; $SQL .= "FROM `session` LEFT OUTER JOIN user ON user.userID = session.userID "; $SQL .= "WHERE 1 = 1 "; if ($fromDt != '') { // From Date is the Calendar Formatted DateTime in ISO format $SQL .= sprintf(" AND session.LastAccessed < '%s' ", DateManager::getMidnightSystemDate(DateManager::getTimestampFromString($fromDt))); } if ($type == "active") { $SQL .= " AND IsExpired = 0 "; } if ($type == "expired") { $SQL .= " AND IsExpired = 1 "; } if ($type == "guest") { $SQL .= " AND session.userID IS NULL "; } // Load results into an array $log = $db->GetArray($SQL); Debug::LogEntry('audit', $SQL); if (!is_array($log)) { trigger_error($db->error()); trigger_error(__('Error getting the log'), E_USER_ERROR); } $cols = array(array('name' => 'lastaccessed', 'title' => __('Last Accessed')), array('name' => 'isexpired', 'title' => __('Active'), 'icons' => true), array('name' => 'username', 'title' => __('User Name')), array('name' => 'lastpage', 'title' => __('Last Page')), array('name' => 'ip', 'title' => __('IP Address')), array('name' => 'browser', 'title' => __('Browser'))); Theme::Set('table_cols', $cols); $rows = array(); foreach ($log as $row) { $row['userid'] = Kit::ValidateParam($row['userID'], _INT); $row['username'] = Kit::ValidateParam($row['UserName'], _STRING); $row['isexpired'] = Kit::ValidateParam($row['IsExpired'], _INT) == 1 ? 0 : 1; $row['lastpage'] = Kit::ValidateParam($row['LastPage'], _STRING); $row['lastaccessed'] = DateManager::getLocalDate(strtotime(Kit::ValidateParam($row['LastAccessed'], _STRING))); $row['ip'] = Kit::ValidateParam($row['RemoteAddr'], _STRING); $row['browser'] = Kit::ValidateParam($row['UserAgent'], _STRING); // Edit $row['buttons'][] = array('id' => 'sessions_button_logout', 'url' => 'index.php?p=sessions&q=ConfirmLogout&userid=' . $row['userid'], 'text' => __('Logout')); $rows[] = $row; } Theme::Set('table_rows', $rows); $response->SetGridResponse(Theme::RenderReturn('table_render')); $response->Respond(); }
public static function Updatesession($s_id, $s_name, $s_date, $s_active = 0) { global $database; if ($s_active == 1) { self::desactivate(); } $s_id = $database->escape_value($s_id); $s_name = $database->escape_value($s_name); $s_date = $database->escape_value($s_date); $s_active = $database->escape_value($s_active); $s_date = DateManager::convertdate2tmstp($s_date); $insert_query = "UPDATE `class_session` SET `name` = '" . $s_name . "',`date` = '" . $s_date . "', `active` = '" . $s_active . "' WHERE `class_session`.`id` ='" . $s_id . "' "; return $database->query($insert_query); }
/** * 実行 */ protected function perform() { // 案件ID $ankenId = $this->_request['aid']; // メディア企業ID $mediaCompanyId = $this->_request['media_company_id']; // モデル $m =& $this->_model; //------------------------- // メディア企業絞り込み処理 //------------------------- $mediaCompanyId = $this->_request['media_company_id']; $mediaCompany =& $m->getMediaCompanyData($mediaCompanyId); $this->_dataFrom['media_company'] =& $mediaCompany; $this->_dataFrom['like_media_company'] = true; // 基本情報 $anken =& $m->getAnkenData($ankenId); $this->appendDataFrom($anken); // 締め日 $shime = $anken['shime_date']; // キャンペーン期間 $from = $anken['campaign_from']; $to = $anken['campaign_to']; // 空の期間配列を作成 $blank = DateManager::getArrayShimeSpan($ankenId, $from, $to, $shime); // 集計 $like = array(); $like['media_company_id'] = $mediaCompanyId; $data =& $m->Result_ClientReportResult_counting($anken, $blank, $like); // テンプレートに渡す $this->_dataFrom['list'] =& $data; //--------------------------------------------- // UPLOAD用のフォームのカスタム処理 //--------------------------------------------- $path = $m->Result_ClientReportResult_getUploadFormTmplPath($ankenId); $this->_dataFrom["upform_path"] = $path; }
/** * 実行 */ protected function perform() { // 案件ID $ankenId = $this->_request['aid']; // メディアID $mediaId = $this->_request['mid']; // モデル $m =& $this->_model; // 基本情報 $anken =& $m->getAnkenAndMediaData($ankenId, $mediaId); $this->appendDataFrom($anken); // キャンペーンコード $code = $anken['campaign_code']; // 提携メディア情報 $teikei = $m->Result_MediaReportResult_getTeikeiMediaData($code, $mediaId, $this->_loginMediaCompanyId); // ダウンロードフラグ if ($this->_loginClientId == null) { $this->_dataFrom['download_flag'] = $teikei['download_flag']; } // キャンペーン期間 $from = $anken['campaign_from']; $to = $anken['campaign_to']; // 締め日 $shime = $anken['shime_date']; // 空データを作成 $blank = DateManager::getArrayShimeSpan($ankenId, $from, $to, $shime); // 集計 $data =& $m->Result_MediaReportResult_counting($anken, $teikei, $blank); //---------------------------------- // メディア今月請求対象明確化 //---------------------------------- // 注意文の基準日を取得 $baseDay = MEDIA_REPORT_RESULT_NOTICE_BASE_DAY; $shimeDay = $anken['shime_date']; $nowY = date('Y'); $nowM = date('m'); $nowD = date('d'); $nowYM = date('Y-m'); if ($baseDay < $shimeDay) { if ($nowD <= $baseDay) { $d = mktime(0, 0, 0, $nowM - 1, 1, $nowY); $this->_dataFrom['notice_target_ym'] = date('Y-m', $d); $this->_dataFrom['notice_text_m'] = date('m', $d); } else { $this->_dataFrom['notice_target_ym'] = $nowYM; $this->_dataFrom['notice_text_m'] = $nowM; } } else { if ($nowD <= $baseDay) { $d = mktime(0, 0, 0, $nowM - 1, 1, $nowY); $this->_dataFrom['notice_target_ym'] = $nowYM; $this->_dataFrom['notice_text_m'] = date('m', $d); } else { $d = mktime(0, 0, 0, $nowM + 1, 1, $nowY); $this->_dataFrom['notice_target_ym'] = date('Y-m', $d); $this->_dataFrom['notice_text_m'] = $nowM; } } // テンプレートに渡す $this->_dataFrom['list'] =& $data; }
/** * 締め日を取得します。 */ public function &Result_AdminReportSalesSalesEdit_getFromTo(&$anken, $toYear, $toMonth) { // 案件IDを取得 $ankenId = intval($anken['anken_id']); // 締め日 $shime = $anken['shime_date']; // 開始日と終了日 $from = date('Y-m-d', mktime(0, 0, 0, $toMonth, 1, $toYear)); $to = date('Y-m-d', mktime(0, 0, 0, $toMonth + 1, 1, $toYear)); // 集計期間を取得 $blank = DateManager::getArrayShimeSpanStrictTo($ankenId, $from, $to, $shime); return $blank[0]; }
public static function write($type, $message) { // Write new log message into database $sql = new SqlManager(); $log = array('type' => $type, 'time' => DateManager::now(), 'trace' => serialize(debug_backtrace()), 'session' => null, 'user' => null, 'message' => $message); }
public function Edit() { // Check the token if (!Kit::CheckToken()) { trigger_error('Token does not match', E_USER_ERROR); } $response = new ResponseManager(); // Create a form out of the config object. $displayProfile = new DisplayProfile(); $displayProfile->displayProfileId = Kit::GetParam('displayprofileid', _POST, _INT); if (!$displayProfile->Load()) { trigger_error($displayProfile->GetErrorMessage(), E_USER_ERROR); } if ($this->user->usertypeid != 1 && $this->user->userid != $displayProfile->userId) { trigger_error(__('You do not have permission to edit this profile'), E_USER_ERROR); } if (empty($displayProfile->type)) { trigger_error(__('Unknown Client Type'), E_USER_ERROR); } $displayProfile->name = Kit::GetParam('name', _POST, _STRING); $displayProfile->isDefault = Kit::GetParam('isdefault', _POST, _CHECKBOX); // Capture and validate the posted form parameters in accordance with the display config object. include 'config/client.config.php'; if (!isset($CLIENT_CONFIG[$displayProfile->type])) { trigger_error(__('CMS Config not supported for ' . $displayProfile->type . ' displays.'), E_USER_ERROR); } $combined = array(); foreach ($CLIENT_CONFIG[$displayProfile->type]['settings'] as $setting) { // Validate the parameter $value = Kit::GetParam($setting['name'], _POST, $setting['type'], $setting['type'] == 'checkbox' ? NULL : $setting['default']); // If we are a time picker, then process the received time if ($setting['fieldType'] == 'timePicker') { $value = $value == '00:00' ? '0' : DateManager::getTimestampFromTimeString($value) * 1000; } // Add to the combined array $combined[] = array('name' => $setting['name'], 'value' => $value, 'type' => $setting['type']); } // Recursively merge the arrays and update $displayProfile->config = $combined; if (!$displayProfile->Save()) { trigger_error($displayProfile->GetErrorMessage(), E_USER_ERROR); } $response->SetFormSubmitResponse(__('Display Configuration Saved.')); $response->Respond(); }
function modTransaction() { require_once _base_ . '/lib/lib.table.php'; require_once _base_ . '/lib/lib.form.php'; require_once _base_ . '/lib/lib.dialog.php'; require_once _lms_ . '/lib/lib.course.php'; require_once _lms_ . '/lib/lib.date.php'; $lang =& DoceboLanguage::createInstance('transaction'); $acl_man = Docebo::user()->getAclManager(); $man_transaction = new Man_Transaction(); $course_man = new Man_Course(); $date_man = new DateManager(); $id_transaction = Get::req('id', DOTY_INT, 0); $transaction_info = $man_transaction->getTransactionInfo($id_transaction); if (isset($_POST['update'])) { $payment_status = Get::req('payment_status', DOTY_INT, 0); $course_status = Get::req('course_status', DOTY_INT, 0); $note = Get::req('note', DOTY_MIXED, ''); if ($man_transaction->updateTransaction($id_transaction, $payment_status, $course_status, $note)) { if (isset($_POST['confirm'])) { $activations = array(); foreach ($_POST['confirm'] as $id => $n) { list($id_course, $id_date) = explode('_', $id); if ($id_date != 0) { $activations[$id_course]['dates'][$id_date] = $id_date; } else { $activations[$id_course] = $id_course; } } if ($man_transaction->activateCourses($id_transaction, $transaction_info['id_user'], $activations)) { Util::jump_to('index.php?modname=transaction&op=transaction&res=ok'); } } else { Util::jump_to('index.php?modname=transaction&op=transaction&res=ok'); } } Util::jump_to('index.php?modname=transaction&op=transaction&res=err_up'); } $array_title = array('index.php?modname=transaction&op=transaction' => $lang->def('_TRANSACTION'), $lang->def('_MOD_TRANSACTION')); //Status info & note $array_payment_status = array('-1' => $lang->def('_CANCELLED'), '0' => $lang->def('_WAITING_PAYMENT'), '1' => $lang->def('_PARTIAL_PAID'), '2' => $lang->def('_PAID')); $array_course_status = array('-1' => $lang->def('_CANCELLED'), '0' => $lang->def('_NO_COURSE_ACTIVATED'), '1' => $lang->def('_SOME_COURSE_ACTIVATED'), '2' => $lang->def('_ALL_COURSE_ACTIVATED')); cout(getTitleArea($array_title) . '<div class="std_block">' . Form::openForm('transaction_info', 'index.php?modname=transaction&op=mod&id=' . $id_transaction) . Form::openElementSpace() . Form::getDropdown($lang->def('_PAYMENT_STATUS_FILTER'), 'payment_status', 'payment_status', $array_payment_status, $transaction_info['payment_status']) . Form::getDropdown($lang->def('_COURSE_STATUS_FILTER'), 'course_status', 'course_status', $array_course_status, $transaction_info['course_status']) . Form::getSimpleTextarea($lang->def('_NOTES'), 'note', 'note', $transaction_info['note']) . Form::closeElementSpace()); //User info $user_info = $acl_man->getUser($transaction_info['id_user'], false); $tb_user = new Table(0, $lang->def('_USER_INFO'), $lang->def('_USER_INFO')); $cont_h = array($lang->def('_USERNAME'), $lang->def('_FIRSTNAME'), $lang->def('_LASTNAME'), $lang->def('_EMAIL')); $type_h = array('', '', '', ''); $tb_user->setColsStyle($type_h); $tb_user->addHead($cont_h); $tb_user->addBody(array($acl_man->relativeId($user_info[ACL_INFO_USERID]), $user_info[ACL_INFO_FIRSTNAME], $user_info[ACL_INFO_LASTNAME], $user_info[ACL_INFO_EMAIL])); cout('<br />' . $tb_user->getTable()); //Payment info if we need it //Product info $tb_product = new Table(0, $lang->def('_PRODUCT_INFO'), $lang->def('_PRODUCT_INFO')); $cont_h = array($lang->def('_CODE'), $lang->def('_NAME'), $lang->def('_DATE_BEGIN'), $lang->def('_DATE_END'), $lang->def('_COURSE_PRIZE'), $lang->def('_CONFIRM_COURSE')); $type_h = array('', '', '', '', '', ''); $tb_product->setColsStyle($type_h); $tb_product->addHead($cont_h); $transaction_course = $man_transaction->getTransactionCourses($id_transaction); foreach ($transaction_course as $id_course => $details) { if (is_array($details)) { foreach ($details['dates'] as $id_date) { $date_info = $date_man->getDateInfo($id_date); $checked = false; $other = ''; if ($man_transaction->controlActivation($id_transaction, $id_course, $id_date)) { $checked = true; $other = 'disabled="disabled"'; } $tb_product->addBody(array($date_info['code'], $date_info['name'], Format::date($date_info['date_begin']), Format::date($date_info['date_end']), $date_info['price'], Form::getInputCheckbox($id_course . '_' . $id_date, 'confirm[' . $id_course . '_' . $id_date . ']', 1, $checked, $other))); } } else { $course_info = $course_man->getCourseInfo($id_course); $checked = false; $other = ''; if ($man_transaction->controlActivation($id_transaction, $id_course)) { $checked = true; $other = 'disabled="disabled"'; } $tb_product->addBody(array($course_info['code'], $course_info['name'], $course_info['date_begin'] !== '0000-00-00' ? Format::date($course_info['date_begin'], 'date') . ($course_info['hour_begin'] !== '-1' ? $course_info['hour_begin'] : '') : '', $course_info['date_end'] !== '0000-00-00' ? Format::date($course_info['date_end'], 'date') . ($course_info['hour_end'] !== '-1' ? $course_info['hour_end'] : '') : '', $course_info['prize'] == '' ? '0' : $course_info['prize'], Form::getInputCheckbox($id_course . '_0', 'confirm[' . $id_course . '_0]', 1, $checked, $other))); } } cout('<br />' . $tb_product->getTable() . Form::openButtonSpace() . Form::getButton('update', 'update', $lang->def('_UPDATE')) . Form::getButton('back_mod', 'back_mod', $lang->def('_BACK')) . Form::closeButtonSpace() . Form::closeForm()); cout('</div>'); }
protected function getTwitterFeed($displayId = 0, $isPreview = true) { if (!extension_loaded('curl')) { trigger_error(__('cURL extension is required for Twitter')); return false; } // Do we need to add a geoCode? $geoCode = ''; $distance = $this->GetOption('tweetDistance'); if ($distance != 0) { // Use the display ID or the default. if ($displayId != 0) { // Look up the lat/long $display = new Display(); $display->displayId = $displayId; $display->Load(); $defaultLat = $display->latitude; $defaultLong = $display->longitude; } else { $defaultLat = Config::GetSetting('DEFAULT_LAT'); $defaultLong = Config::GetSetting('DEFAULT_LONG'); } // Built the geoCode string. $geoCode = implode(',', array($defaultLat, $defaultLong, $distance)) . 'mi'; } // Connect to twitter and get the twitter feed. $key = md5($this->GetOption('searchTerm') . $this->GetOption('resultType') . $this->GetOption('tweetCount', 15) . $geoCode); if (!Cache::has($key) || Cache::get($key) == '') { Debug::Audit('Querying API for ' . $this->GetOption('searchTerm')); // We need to search for it if (!($token = $this->getToken())) { return false; } // We have the token, make a tweet if (!($data = $this->searchApi($token, $this->GetOption('searchTerm'), $this->GetOption('resultType'), $geoCode, $this->GetOption('tweetCount', 15)))) { return false; } // Cache it Cache::put($key, $data, $this->GetSetting('cachePeriod')); } else { Debug::Audit('Served from Cache'); $data = Cache::get($key); } Debug::Audit(var_export(json_encode($data), true)); // Get the template $template = $this->GetRawNode('template'); // Parse the text template $matches = ''; preg_match_all('/\\[.*?\\]/', $template, $matches); // Build an array to return $return = array(); // Media Object to get profile images $media = new Media(); $layout = new Layout(); // Expiry time for any media that is downloaded $expires = time() + $this->GetSetting('cachePeriodImages') * 60 * 60; // Remove URL setting $removeUrls = $this->GetOption('removeUrls', 1); // If we have nothing to show, display a no tweets message. if (count($data->statuses) <= 0) { // Create ourselves an empty tweet so that the rest of the code can continue as normal $user = new stdClass(); $user->name = ''; $user->screen_name = ''; $user->profile_image_url = ''; $tweet = new stdClass(); $tweet->text = $this->GetOption('noTweetsMessage', __('There are no tweets to display')); $tweet->created_at = date("Y-m-d H:i:s"); $tweet->user = $user; // Append to our statuses $data->statuses[] = $tweet; } // This should return the formatted items. foreach ($data->statuses as $tweet) { // Substitute for all matches in the template $rowString = $template; foreach ($matches[0] as $sub) { // Always clear the stored template replacement $replace = ''; // Maybe make this more generic? switch ($sub) { case '[Tweet]': // Get the tweet text to operate on $tweetText = $tweet->text; // Replace URLs with their display_url before removal if (isset($tweet->entities->urls)) { foreach ($tweet->entities->urls as $url) { $tweetText = str_replace($url->url, $url->display_url, $tweetText); } } // Handle URL removal if requested if ($removeUrls == 1) { $tweetText = preg_replace("((https?|ftp|gopher|telnet|file|notes|ms-help):((\\/\\/)|(\\\\))+[\\w\\d:#\\@%\\/;\$()~_?\\+-=\\\\.&]*)", '', $tweetText); } $replace = emoji_unified_to_html($tweetText); break; case '[User]': $replace = $tweet->user->name; break; case '[ScreenName]': $replace = $tweet->user->screen_name; break; case '[Date]': $replace = date($this->GetOption('dateFormat', Config::GetSetting('DATE_FORMAT')), DateManager::getDateFromGregorianString($tweet->created_at)); break; case '[ProfileImage]': // Grab the profile image if ($tweet->user->profile_image_url != '') { $file = $media->addModuleFileFromUrl($tweet->user->profile_image_url, 'twitter_' . $tweet->user->id, $expires); // Tag this layout with this file $layout->AddLk($this->layoutid, 'module', $file['mediaId']); $replace = $isPreview ? '<img src="index.php?p=module&mod=image&q=Exec&method=GetResource&mediaid=' . $file['mediaId'] . '" />' : '<img src="' . $file['storedAs'] . '" />'; } break; case '[Photo]': // See if there are any photos associated with this tweet. if (isset($tweet->entities->media) && count($tweet->entities->media) > 0) { // Only take the first one $photoUrl = $tweet->entities->media[0]->media_url; if ($photoUrl != '') { $file = $media->addModuleFileFromUrl($photoUrl, 'twitter_photo_' . $tweet->user->id . '_' . $tweet->entities->media[0]->id_str, $expires); $replace = $isPreview ? '<img src="index.php?p=module&mod=image&q=Exec&method=GetResource&mediaid=' . $file['mediaId'] . '" />' : '<img src="' . $file['storedAs'] . '" />'; // Tag this layout with this file $layout->AddLk($this->layoutid, 'module', $file['mediaId']); } } break; default: $replace = ''; } $rowString = str_replace($sub, $replace, $rowString); } // Substitute the replacement we have found (it might be '') $return[] = $rowString; } // Return the data array return $return; }
include 'includes/pagestructure.php'; include 'includes/smartbanner.php'; include 'includes/smartnav.php'; head('Welcome to Urban Illustration'); topbar(); ?> <div id="content"> <div id="maincontent"> <div class="textcontentalone"> <h1>join the class of <?php echo DateManager::frontdisplaytimefromtmstp($classtojoin->c_date); ?> part of the <?php echo $sessiontojoin->name; ?> </h1> <p>Please fill out the form below to register for a class in the upcoming Spring Session. Please be sure to look at DAY and TIME to be sure you are registering for the correct time slot. </p> <?php $stillspots = Classes::anyspots($classtojoin->id); if ($stillspots) { echo '<h2>CLASS FULL</h2>'; } else { if (isset($captchaerror)) { $p_firstname = $database->escape_value($_POST['p_firstname']); $p_lastname = $database->escape_value($_POST['p_lastname']);
/** * 実行 */ protected function perform() { // 案件ID $ankenId = $this->_request['aid']; // モデル $m =& $this->_model; // フォーム初期化 $m->initFormData(); if (isset($this->_request['search']) == true || $this->_isDownload == true) { // 日にちの空データを作成 $from = $this->_like['from']; $to = $this->_like['to']; $blank = DateManager::getArrayDaily($ankenId, $from, $to); // キャンペーンコード $code = $this->_anken['campaign_code']; // レポート種別 $reportKind = $this->_like['report_kind']; // 該当メディア/メディア企業一覧取得 $groupList =& $m->getGropuList($code, $this->_like); // PVデータ $dataPv =& $m->getDailyPv($code, $this->_like); // 成果データ $dataSeika =& $m->getDailySeika($code, $this->_like); if ($reportKind == 1) { //////////////////// // 総合 //////////////////// // マージ $formData =& $m->counting($blank, $dataPv, $dataSeika); // テンプレート変数追加 $this->_dataFrom['show'] = true; $this->_dataFrom['group'] =& $groupList; $this->_dataFrom['list'] =& $formData; $as = new ArraySort(); if (is_array($groupList['media']) == true) { $as->keySort($groupList['media'], 'id'); } if (is_array($groupList['media_company']) == true) { $as->keySort($groupList['media_company'], 'id'); } $this->_dataFrom['search_group'] =& $groupList; } else { if ($reportKind == 2) { //////////////////// // メディア別 //////////////////// $group = $groupList['media']; } else { if ($reportKind == 3) { //////////////////// // メディア企業別 //////////////////// $group = $groupList['media_company']; } } if (count($group) > 0) { // マージ $formData =& $m->countingGroup($blank, $dataPv, $dataSeika, $group); // テンプレート変数追加 $this->_dataFrom['show'] = true; $this->_dataFrom['search_group'] =& $groupList; $this->_dataFrom['group'] =& $group; $this->_dataFrom['list'] =& $formData; $as = new ArraySort(); if (is_array($groupList['media']) == true) { $as->keySort($groupList['media'], 'id'); } if (is_array($groupList['media_company']) == true) { $as->keySort($groupList['media_company'], 'id'); } $this->_dataFrom['search_group'] =& $groupList; } } } // モデル内の値をテンプレートに設定 $d =& $m->getFormData(); $this->appendDataFrom($d); }
?> </h2> <form action="classes-view.php?sid=<?php echo $_GET['sid']; ?> " method="post"> <input type="hidden" value="<?php echo $updateclass->id; ?> " name="cls_id" /> Class Date: <input type="datetime" maxlength="40" name="class-date" value="<?php echo DateManager::displaydatefromtmstp($updateclass->c_date); ?> "/> MM/DD/YY Class Time: <input type="text" maxlength="40" name="class-time" value="<?php echo DateManager::backdisplaytimefromtmstp($updateclass->c_date); ?> "/>HH:MM<br /> Available Spots: <input type="text" maxlength="40" name="spots" value="<?php echo $updateclass->spots; ?> "/> <br />Note:<br /> <textarea rows="2" cols="60" name="note"> <?php echo $updateclass->note; ?> </textarea><br /> <input type="submit" name="Update" value="Update" /> </form> <?php } else {
function presence() { checkPerm('view'); require_once _base_ . '/lib/lib.form.php'; require_once _base_ . '/lib/lib.table.php'; YuiLib::load(); Util::get_js(Get::rel_path('lms') . '/admin/views/classroom/classroom.js', true, true); $id_date = Get::req('id_date', DOTY_INT, 0); $lang =& DoceboLanguage::CreateInstance('admin_date', 'lms'); $date_man = new DateManager(); $user_date = $date_man->getUserDateForCourse(getLogUserId(), $_SESSION['idCourse']); $date_info = $date_man->getDateInfoForPublicPresence($user_date); foreach ($date_info as $info_date) { $date_for_dropdown[$info_date['id_date']] = $info_date['code'] . ' - ' . $info_date['name'] . ' (' . Format::date($info_date['date_begin'], 'date') . ')'; } if ($id_date == 0) { $id_date = isset($date_info[0]['id_date']) ? $date_info[0]['id_date'] : 0; } cout(getTitleArea(Lang::t('_ATTENDANCE')) . '<div class="std_block">', 'content'); if (isset($_POST['save'])) { require_once $GLOBALS['where_lms'] . '/lib/lib.date.php'; $date_man = new DateManager(); $id_date = Get::req('id_date', DOTY_INT, 0); $score_min = Get::req('score_min', DOTY_INT, 0); $user = $date_man->getUserForPresence($id_date); $day = $date_man->getDateDay($id_date); $test_type = $date_man->getTestType($id_date); foreach ($user as $id_user => $user_info) { $user[$id_user]['score'] = Get::req('score_' . $id_user, DOTY_INT, 0); $user[$id_user]['note'] = Get::req('note_' . $id_user, DOTY_MIXED, ''); $user[$id_user]['day_presence'] = array(); for ($i = 0; $i < count($day); $i++) { $user[$id_user]['day_presence'][$day[$i]['id_day']] = Get::req('date_' . $day[$i]['id_day'] . '_' . $id_user, DOTY_INT, 0); } } if ($date_man->insDatePresence($_SESSION['id_course_date'], $id_date, $user, $day, $score_min)) { UIFeedback::info(Lang::t('_ATTENDANCE_SAVED', 'admin_date')); } else { UIFeedback::error(Lang::t('_ATTENDANCE_SAVED_ERROR', 'admin_date')); } } if ($id_date == 0) { cout(Lang::t('_NO_CONTENT', 'admin_date'), 'content'); } else { $user = $date_man->getUserForPresence($id_date); $day = $date_man->getDateDay($id_date); $test_type = $date_man->getTestType($id_date); $user_presence = $date_man->getUserPresenceForDate($id_date); $tb = new Table(0, Lang::t('_ATTENDANCE', 'admin_date'), Lang::t('_ATTENDANCE', 'admin_date')); $cont_h = array(Lang::t('_USERNAME', 'admin_date'), Lang::t('_FULLNAME', 'admin_date')); $type_h = array('', ''); foreach ($day as $id_day => $day_info) { $cont_h[] = Format::date($day_info['date_begin'], 'date') . '<br />' . '<a href="javascript:;" onClick="checkAllDay(' . $id_day . ')">' . Get::img('standard/checkall.png', Lang::t('_CHECK_ALL_DAY', 'presence') . '</a>') . ' ' . '<a href="javascript:;" onClick="unCheckAllDay(' . $id_day . ')">' . Get::img('standard/uncheckall.png', Lang::t('_UNCHECK_ALL_DAY', 'presence') . '</a>'); $type_h[] = 'align_center'; } $cont_h[] = ''; $type_h[] = 'img-cell'; if ($test_type == _DATE_TEST_TYPE_PAPER) { $cont_h[] = Lang::t('_SCORE', 'admin_date'); $type_h[] = 'align_center'; } $cont_h[] = Lang::t('_NOTES', 'admin_date'); $type_h[] = 'align_center'; $tb->setColsStyle($type_h); $tb->addHead($cont_h); cout(Form::openForm('presence_form', 'index.php?modname=presence&op=presence') . Form::openElementSpace() . Form::getDropdown(Lang::t('_SELECT_EDITION', 'admin_date'), 'id_date', 'id_date', $date_for_dropdown, $id_date) . Form::closeElementSpace() . Form::openElementSpace() . ($test_type == 1 ? Form::getTextfield(Lang::t('_MIN_SCORE', 'admin_date'), 'score_min', 'score_min', 255, '') : ''), 'content'); $array_user_id = array(); foreach ($user as $id_user => $user_info) { reset($day); $array_user_id[] = $id_user; $cont = array(); $cont[] = $user_info['userid']; $cont[] = $user_info['lastname'] . ' ' . $user_info['firstname']; foreach ($day as $id_day => $day_info) { if (isset($user_presence[$id_user][substr($day_info['date_begin'], 0, 10)]) && $user_presence[$id_user][substr($day_info['date_begin'], 0, 10)]['presence'] == 1) { $presence = true; } elseif (isset($user_presence[$id_user][substr($day_info['date_begin'], 0, 10)]) && $user_presence[$id_user][substr($day_info['date_begin'], 0, 10)]['presence'] == 0) { $presence = false; } else { $presence = false; } $cont[] = Form::getInputCheckbox('date_' . $id_day . '_' . $id_user, 'date_' . $id_day . '_' . $id_user, 1, $presence, false); } $cont[] = '<a href="javascript:;" onClick="checkAllUser(' . $id_user . ')">' . Get::img('standard/checkall.png', Lang::t('_CHECK_ALL_USER', 'presence') . '</a>') . '<br />' . '<a href="javascript:;" onClick="unCheckAllUser(' . $id_user . ')">' . Get::img('standard/uncheckall.png', Lang::t('_UNCHECK_ALL_USER', 'presence') . '</a>'); if ($test_type == _DATE_TEST_TYPE_PAPER) { if (isset($user_presence[$id_user]['0000-00-00']) && $user_presence[$id_user]['0000-00-00']['presence'] == 1) { $passed = true; } else { $passed = false; } $cont[] = Form::getTextfield('', 'score_' . $id_user, 'score_' . $id_user, 255, isset($user_presence[$id_user]['0000-00-00']['score']) ? $user_presence[$id_user]['0000-00-00']['score'] : '0'); } $cont[] = Form::getSimpleTextarea('', 'note_' . $id_user, 'note_' . $id_user, isset($user_presence[$id_user]['0000-00-00']['note']) ? $user_presence[$id_user]['0000-00-00']['note'] : '', false, false, false, 2); $tb->addBody($cont); } cout($tb->getTable() . Form::closeElementSpace() . Form::openButtonSpace() . Form::getButton('save', 'save', Lang::t('_SAVE', 'admin_date')) . Form::closeElementSpace() . Form::closeForm() . '</div>', 'content'); cout('<script type="text/javascript">' . 'var _MIN_SCORE_NOT_SET = "' . Lang::t('_MIN_SCORE_NOT_SET', 'admin_date') . '";' . 'YAHOO.util.Event.addListener("save", "click", controlMinScore);' . 'YAHOO.util.Event.addListener("id_date", "change", formSubmit);' . 'function checkAllDay(id_day) { var days = YAHOO.util.Selector.query(\'input[id*=_\' + id_day + \'_]\'); var i; for(i = 0; i < days.length; i++) days[i].checked = true; } function unCheckAllDay(id_day) { var days = YAHOO.util.Selector.query(\'input[id*=_\' + id_day + \'_]\'); var i; for(i = 0; i < days.length; i++) days[i].checked = false; } function checkAllUser(id_user) { var days = YAHOO.util.Selector.query(\'input[id*=_\' + id_user + \']\'); var i; for(i = 0; i < days.length; i++) days[i].checked = true; } function unCheckAllUser(id_user) { var days = YAHOO.util.Selector.query(\'input[id*=_\' + id_user + \']\'); var i; for(i = 0; i < days.length; i++) days[i].checked = false; }' . '</script>', 'content'); } cout('</div>', 'content'); }
/** * 成果件数を取得します * @param array $ankenList 対象メディアデータ * @param array $like 検索条件配列 */ public function &Result_MediaCompanyDownload_getSeikaData(&$ankenList, &$like) { $db =& $this->_core->getDB(); // 条件を作成 $where = ""; $param = array(); // メディア企業ID (検索条件) if (empty($like['media_company_id']) == false) { $mediaCompanyId = $like['media_company_id']; $where .= " and M.media_company_id=? "; $param[] = $mediaCompanyId; } // ステータス if (empty($like['status']) == false && count($like['status']) != 3) { $status = $like['status']; if (in_array(1, $status) == true) { $list[] = " CS.accept_flg=1 "; } if (in_array(2, $status) == true) { $list[] = " CS.accept_flg=0 "; } if (in_array(3, $status) == true) { $list[] = " CS.accept_flg is null "; } $s = implode(' or ', $list); if (strlen($s) != 0) { $where .= " and ({$s}) "; } } // 対象日付条件 $targetData = 'CS.action_date'; if (empty($like['date_target']) == false && $like['date_target'] == 2) { $targetData = 'CS.accept_date'; } $result = array(); // 拡張処理用SQL文 $sql = <<<SQL select is_custom, result_media_company_download as flg from ald_custom_status where anken_id=? SQL; // 案件毎に成果データを取得し整理します。 foreach ($ankenList as $key => $anken) { $ankenId = intval($anken['anken_id']); // 検索範囲を取得 $from = trim($like['target_month']); $next = strtotime("{$month} + 1 month"); $to = date('Y-m-d', $next); $shime = $anken['anken_shime_date']; $ankenWhere = $where . " and {$targetData} between ? and ?"; $span =& DateManager::getArrayShimeSpan($ankenId, $from, $to, $shime); $ankenParam = $param; $ankenParam[] = $span[0]['from']; $ankenParam[] = $span[0]['to']; // 拡張テーブルから拡張確認 $data =& $db->query($sql, array($ankenId)); // 対象モデル $model =& $this; if (count($data) == 1) { $isCustom = $data[0]['is_custom']; $flag = $data[0]['flg']; // 拡張処理であれば一時的にモデル入れ替え if ($isCustom == '1' && $flag == '1') { // ファイルパス $base = $this->_core->getBaseName(); $path = ABS_MODEL . "alladinExtend/{$ankenId}/{$base}_{$ankenId}_model.php"; require_once $path; // クラス名称 $b = str_replace('/', '_', $base); $className = "{$b}_{$ankenId}_model"; // インスタンス生成 $model = new $className($this->_core); } // 成果データ取得 $data =& $model->Result_MediaCompanyDownload_getAnkenSeikaData($anken, $ankenWhere, $ankenParam); if (count($data) != 0) { // 整理 $model->Result_MediaCompanyDownload_formatAnkenSeikaData($anken, $data); // 結果を連結 array_splice($result, count($result), 0, $data); } } } return $result; }
/** * Edits an event * @return */ public function EditEvent() { // Check the token if (!Kit::CheckToken(Kit::GetParam('token_id', _POST, _STRING))) { trigger_error(__('Sorry the form has expired. Please refresh.'), E_USER_ERROR); } $db =& $this->db; $user =& $this->user; $response = new ResponseManager(); $eventId = Kit::GetParam('EventID', _POST, _INT, 0); $campaignId = Kit::GetParam('CampaignID', _POST, _INT, 0); $fromDT = Kit::GetParam('starttime', _POST, _STRING); $toDT = Kit::GetParam('endtime', _POST, _STRING); $displayGroupIDs = Kit::GetParam('DisplayGroupIDs', _POST, _ARRAY); $isPriority = Kit::GetParam('is_priority', _POST, _CHECKBOX); $repeatType = Kit::GetParam('rec_type', _POST, _STRING); $repeatInterval = Kit::GetParam('rec_detail', _POST, _INT); $repeatToDt = Kit::GetParam('rec_range', _POST, _STRING); $displayOrder = Kit::GetParam('DisplayOrder', _POST, _INT); $isNextButton = Kit::GetParam('next', _GET, _BOOL, false); // Convert our ISO strings $fromDT = DateManager::getTimestampFromString($fromDT); $toDT = DateManager::getTimestampFromString($toDT); if ($repeatToDt != '') { $repeatToDt = DateManager::getTimestampFromString($repeatToDt); } Debug::Audit('Times received are: FromDt=' . $fromDT . '. ToDt=' . $toDT . '. RepeatToDt=' . $repeatToDt); // Validate layout if ($campaignId == 0) { trigger_error(__("No layout selected"), E_USER_ERROR); } // check that at least one display has been selected if ($displayGroupIDs == '') { trigger_error(__("No displays selected"), E_USER_ERROR); } // validate the dates if ($toDT < $fromDT) { trigger_error(__('Can not have an end time earlier than your start time'), E_USER_ERROR); } // Check recurrence dT is in the future or empty if ($repeatToDt != '' && $repeatToDt < time() - 86400) { trigger_error(__("Your repeat until date is in the past. Cannot schedule events to repeat in to the past"), E_USER_ERROR); } // Ready to do the edit $scheduleObject = new Schedule($db); if (!$scheduleObject->Edit($eventId, $displayGroupIDs, $fromDT, $toDT, $campaignId, $repeatType, $repeatInterval, $repeatToDt, $isPriority, $this->user->userid, $displayOrder)) { trigger_error($scheduleObject->GetErrorMessage(), E_USER_ERROR); } $response->SetFormSubmitResponse(__("The Event has been Modified.")); $response->callBack = 'CallGenerateCalendar'; $response->Respond(); }
public function getClassrooms($params) { require_once _lms_ . '/lib/lib.course.php'; require_once _lms_ . '/lib/lib.date.php'; $output = array(); $output['success'] = true; $course_id = isset($params['course_id']) ? (int) $params['course_id'] : false; $course_code = isset($params['course_code']) ? $params['course_code'] : false; if (empty($course_id) && empty($course_code)) { return false; // return array('success'=>true, 'debug'=>print_r($params, true)); } else { if (empty($course_id) && !empty($course_code)) { // grab course info by code: $db = DbConn::getInstance(); $qtxt = "SELECT * FROM %lms_course\r\n\t\t\t\t\tWHERE code='" . $course_code . "'\r\n\t\t\t\t\tLIMIT 0,1"; $q = $db->query($qtxt); $course_info = $db->fetch_assoc($q); if (!empty($course_info)) { $course_id = (int) $course_info['idCourse']; } else { // course not found return false; // return array('success'=>'true', 'debug'=>print_r($course_info)); } } } $classroom_man = new DateManager(); $course_list = $classroom_man->getCourseDate($course_id); $course_man = new Man_Course(); $course = $course_man->getCourseInfo($course_id); foreach ($course_list as $key => $course_info) { $output[]['course_info'] = array('course_id' => $course['idCourse'], 'date_id' => $course_info['id_date'], 'code' => str_replace('&', '&', $course_info['code']), 'course_name' => str_replace('&', '&', $course_info['name']), 'course_description' => str_replace('&', '&', $course_info['description']), 'status' => $course_info['status'], 'selling' => $course['selling'], 'price' => $course_info['price'], 'subscribe_method' => $course['subscribe_method'], 'sub_start_date' => $course_info['sub_start_date'], 'sub_end_date' => $course_info['sub_end_date'], 'date_begin' => $course_info['date_begin'], 'date_end' => $course_info['date_end'], 'num_day' => $course_info['num_day'], 'classroom' => $course_info['classroom'], 'course_link' => Get::sett('url') . _folder_lms_ . '/index.php?modname=course&op=aula&idCourse=' . $course['idCourse']); } //$output['debug']=print_r($course_list, true).print_r($course, true); return $output; }
public function createAuthCode() { // Save random auth code in users meta data $authcode = Crypt::hash("random:authcode:" . DateManager::now() . ":" . rand()); Meta::remove("user", $this->id, "authcode"); Meta::save("user", $this->id, "authcode", Crypt::createHash($authcode)); }
/** * 実行 */ protected function perform() { // 案件ID $ankenId = $this->_request['aid']; // メディアID $mediaId = $this->_request['mid']; // モデル $m =& $this->_model; // フォーム初期化 $m->Result_MediaReportDaily_initFormData(); if (isset($this->_request['search']) == true || $this->_isDownload == true) { // キャンペーンコード $code = $this->_anken['campaign_code']; // 空データを作成 $blank = DateManager::getArrayDaily($ankenId, $this->_like['from'], $this->_like['to']); // PVデータ $dataPv = $m->Result_MediaReportDaily_getDailyPv($code, $mediaId, $this->_like); // 成果データ $dataSeika =& $m->Result_MediaReportDaily_getDailySeika($code, $mediaId, $this->_like); // マージ $formData =& $m->Result_MediaReportDaily_counting($blank, $dataPv, $dataSeika); // テンプレート変数追加 $this->_dataFrom['show'] = true; $this->_dataFrom['list'] =& $formData; } // モデル内の値をテンプレートに設定 $d =& $m->getFormData(); $this->appendDataFrom($d); }
function load() { $isFirst = TRUE; // check if the user attende the course if ($GLOBALS['course_descriptor']->getValue('course_type') == 'classroom') { require_once _lms_ . '/lib/lib.date.php'; $man_date = new DateManager(); $this->user_presence = $man_date->checkUserPresence(getLogUserId(), $_SESSION['idCourse']); } $tree = $this->printState(); $coll = $this->_retrieveData(); $stack = array(); $level = 0; $count = 0; $tree .= '<div class="TreeViewContainer">' . "\n"; $folder = $this->tdb->getRootFolder(); $stack[$level] = array(); $stack[$level]['folder'] = $folder; $stack[$level]['childs'] = $this->posTree[0]; $stack[$level]['isLast'] = TRUE; $stack[$level]['isLeaf'] = FALSE; $stack[$level]['isExpanded'] = FALSE; $stack[$level]['idSeq'] = $folder->id; $stack[$level]['isFirst'] = $isFirst; $tree .= '<div class="TreeViewRowOdd" id="row_' . $stack[$level]['idSeq'] . '">'; $tree .= $this->printElement($stack, $level); $tree .= '</div>'; $level++; if ($coll !== FALSE) { while ($folder = $coll->getNext()) { list($key, $val) = each($stack[$level - 1]['childs']); $stack[$level] = array(); $stack[$level]['folder'] = $folder; $stack[$level]['childs'] = $val; $stack[$level]['isFirst'] = $isFirst; $isFirst = FALSE; if (current($stack[$level - 1]['childs'])) { $stack[$level]['isLast'] = false; } else { $stack[$level]['isLast'] = true; } if (is_array($val)) { $stack[$level]['isExpanded'] = TRUE; } else { $stack[$level]['isExpanded'] = FALSE; } if ($folder->countChildrens() > 0) { $stack[$level]['isLeaf'] = FALSE; } else { $stack[$level]['isLeaf'] = TRUE; } $stack[$level]['idSeq'] = $stack[$level - 1]['idSeq'] . '.' . $folder->id; $row_content = $this->printElement($stack, $level); if ($row_content !== false) { $count++; if ($count % 2 == 0) { $tree .= '<div class="TreeViewRowOdd" id="row_' . $stack[$level]['idSeq'] . '">'; } else { $tree .= '<div class="TreeViewRowEven" id="row_' . $stack[$level]['idSeq'] . '">'; } $tree .= $row_content; $tree .= '</div>'; if (is_array($val)) { $level++; $isFirst = TRUE; } else { if ($stack[$level]['isLast']) { while ($stack[$level]['isLast'] && $level > 1) { $level--; } } } } } } else { $tree .= "\n<!-- coll is null -->"; } /* echo "\n<!-- diag "; print_r( $this->posTree ); print_r( $this->posFlat ); print_r( $this->expandList ); print_r( $this->compressList ); echo "-->\n"; */ $tree .= '</div>' . "\n"; return $tree; }
/** * Grid of Displays * @return */ function DisplayGrid() { // validate displays so we get a realistic view of the table Display::ValidateDisplays(); $db =& $this->db; $user =& $this->user; $response = new ResponseManager(); // Filter by Name $filter_display = Kit::GetParam('filter_display', _POST, _STRING); setSession('display', 'filter_display', $filter_display); // Filter by Name $filterMacAddress = Kit::GetParam('filterMacAddress', _POST, _STRING); setSession('display', 'filterMacAddress', $filterMacAddress); // Display Group $filter_displaygroupid = Kit::GetParam('filter_displaygroup', _POST, _INT); setSession('display', 'filter_displaygroup', $filter_displaygroupid); // Thumbnail? $filter_showView = Kit::GetParam('filter_showView', _REQUEST, _INT); setSession('display', 'filter_showView', $filter_showView); $filterVersion = Kit::GetParam('filterVersion', _REQUEST, _STRING); setSession('display', 'filterVersion', $filterVersion); // filter_autoRefresh? $filter_autoRefresh = Kit::GetParam('filter_autoRefresh', _REQUEST, _INT, 0); setSession('display', 'filter_autoRefresh', $filter_autoRefresh); // Pinned option? setSession('display', 'DisplayFilter', Kit::GetParam('XiboFilterPinned', _REQUEST, _CHECKBOX, 'off')); $displays = $user->DisplayList(array('displayid'), array('displaygroupid' => $filter_displaygroupid, 'display' => $filter_display, 'macAddress' => $filterMacAddress, 'clientVersion' => $filterVersion)); if (!is_array($displays)) { trigger_error($db->error()); trigger_error(__('Unable to get list of displays'), E_USER_ERROR); } // Do we want to make a VNC link out of the display name? $vncTemplate = Config::GetSetting('SHOW_DISPLAY_AS_VNCLINK'); $linkTarget = Kit::ValidateParam(Config::GetSetting('SHOW_DISPLAY_AS_VNC_TGT'), _STRING); $cols = array(array('name' => 'displayid', 'title' => __('ID')), array('name' => 'displayWithLink', 'title' => __('Display')), array('name' => 'status', 'title' => __('Status'), 'icons' => true, 'iconDescription' => 'statusDescription'), array('name' => 'licensed', 'title' => __('License'), 'icons' => true), array('name' => 'currentLayout', 'title' => __('Current Layout'), 'hidden' => $filter_showView != 3), array('name' => 'storageAvailableSpaceFormatted', 'title' => __('Storage Available'), 'hidden' => $filter_showView != 3), array('name' => 'storageTotalSpaceFormatted', 'title' => __('Storage Total'), 'hidden' => $filter_showView != 3), array('name' => 'storagePercentage', 'title' => __('Storage Free %'), 'hidden' => $filter_showView != 3), array('name' => 'description', 'title' => __('Description'), 'hidden' => $filter_showView != 4), array('name' => 'layout', 'title' => __('Default Layout'), 'hidden' => $filter_showView != 0), array('name' => 'inc_schedule', 'title' => __('Interleave Default'), 'icons' => true, 'hidden' => $filter_showView == 1 || $filter_showView == 2), array('name' => 'email_alert', 'title' => __('Email Alert'), 'icons' => true, 'hidden' => $filter_showView != 0), array('name' => 'loggedin', 'title' => __('Logged In'), 'icons' => true), array('name' => 'lastaccessed', 'title' => __('Last Accessed')), array('name' => 'clientVersionCombined', 'title' => __('Version'), 'hidden' => $filter_showView != 3), array('name' => 'clientaddress', 'title' => __('IP Address'), 'hidden' => $filter_showView == 1), array('name' => 'macaddress', 'title' => __('Mac Address'), 'hidden' => $filter_showView == 1), array('name' => 'screenShotRequested', 'title' => __('Screen shot?'), 'icons' => true, 'hidden' => $filter_showView != 1 && $filter_showView != 2), array('name' => 'thumbnail', 'title' => __('Thumbnail'), 'hidden' => $filter_showView != 1 && $filter_showView != 2)); Theme::Set('table_cols', $cols); Theme::Set('rowClass', 'rowColor'); $rows = array(); foreach ($displays as $row) { // VNC Template as display name? if ($vncTemplate != '' && $row['clientaddress'] != '') { if ($linkTarget == '') { $linkTarget = '_top'; } $row['displayWithLink'] = sprintf('<a href="' . $vncTemplate . '" title="VNC to ' . $row['display'] . '" target="' . $linkTarget . '">' . Theme::Prepare($row['display']) . '</a>', $row['clientaddress']); } else { $row['displayWithLink'] = $row['display']; } // Format last accessed $row['lastaccessed'] = DateManager::getLocalDate($row['lastaccessed']); // Create some login lights $row['rowColor'] = $row['mediainventorystatus'] == 1 ? 'success' : ($row['mediainventorystatus'] == 2 ? 'danger' : 'warning'); // Set some text for the display status switch ($row['mediainventorystatus']) { case 1: $row['statusDescription'] = __('Display is up to date'); break; case 2: $row['statusDescription'] = __('Display is downloading new files'); break; case 3: $row['statusDescription'] = __('Display is out of date but has not yet checked in with the server'); break; default: $row['statusDescription'] = __('Unknown Display Status'); } $row['status'] = $row['mediainventorystatus'] == 1 ? 1 : ($row['mediainventorystatus'] == 2 ? 0 : -1); // Thumbnail $row['thumbnail'] = ''; // If we aren't logged in, and we are showThumbnail == 2, then show a circle if ($filter_showView == 2 && $row['loggedin'] == 0) { $row['thumbnail'] = '<i class="fa fa-times-circle"></i>'; } else { if ($filter_showView != 0 && file_exists(Config::GetSetting('LIBRARY_LOCATION') . 'screenshots/' . $row['displayid'] . '_screenshot.jpg')) { $row['thumbnail'] = '<a data-toggle="lightbox" data-type="image" href="index.php?p=display&q=ScreenShot&DisplayId=' . $row['displayid'] . '"><img class="display-screenshot" src="index.php?p=display&q=ScreenShot&DisplayId=' . $row['displayid'] . '&' . Kit::uniqueId() . '" /></a>'; } } // Version $row['clientVersionCombined'] = $row['client_type'] . ' / ' . $row['client_version']; // Format the storage available / total space $row['storageAvailableSpaceFormatted'] = Kit::formatBytes($row['storageAvailableSpace']); $row['storageTotalSpaceFormatted'] = Kit::formatBytes($row['storageTotalSpace']); $row['storagePercentage'] = $row['storageTotalSpace'] == 0 ? 100 : round($row['storageAvailableSpace'] / $row['storageTotalSpace'] * 100.0, 2); // Edit and Delete buttons first if ($row['edit'] == 1) { // Edit $row['buttons'][] = array('id' => 'display_button_edit', 'url' => 'index.php?p=display&q=displayForm&displayid=' . $row['displayid'], 'text' => __('Edit')); } // Delete if ($row['del'] == 1) { $row['buttons'][] = array('id' => 'display_button_delete', 'url' => 'index.php?p=display&q=DeleteForm&displayid=' . $row['displayid'], 'text' => __('Delete')); } if ($row['edit'] == 1 || $row['del'] == 1) { $row['buttons'][] = array('linkType' => 'divider'); } // Schedule Now if ($row['edit'] == 1 || Config::GetSetting('SCHEDULE_WITH_VIEW_PERMISSION') == 'Yes') { $row['buttons'][] = array('id' => 'display_button_schedulenow', 'url' => 'index.php?p=schedule&q=ScheduleNowForm&displayGroupId=' . $row['displaygroupid'], 'text' => __('Schedule Now')); } if ($row['edit'] == 1) { // Default Layout $row['buttons'][] = array('id' => 'display_button_defaultlayout', 'url' => 'index.php?p=display&q=DefaultLayoutForm&DisplayId=' . $row['displayid'], 'text' => __('Default Layout')); // File Associations $row['buttons'][] = array('id' => 'displaygroup_button_fileassociations', 'url' => 'index.php?p=displaygroup&q=FileAssociations&DisplayGroupID=' . $row['displaygroupid'], 'text' => __('Assign Files')); // Screen Shot $row['buttons'][] = array('id' => 'display_button_requestScreenShot', 'url' => 'index.php?p=display&q=RequestScreenShotForm&displayId=' . $row['displayid'], 'text' => __('Request Screen Shot'), 'multi-select' => true, 'dataAttributes' => array(array('name' => 'multiselectlink', 'value' => 'index.php?p=display&q=RequestScreenShot'), array('name' => 'rowtitle', 'value' => $row['display']), array('name' => 'displayId', 'value' => $row['displayid']))); $row['buttons'][] = array('linkType' => 'divider'); } // Media Inventory $row['buttons'][] = array('id' => 'display_button_mediainventory', 'url' => 'index.php?p=display&q=MediaInventory&DisplayId=' . $row['displayid'], 'text' => __('Media Inventory')); if ($row['edit'] == 1) { // Logs $row['buttons'][] = array('id' => 'displaygroup_button_logs', 'url' => 'index.php?p=log&q=LastHundredForDisplay&displayid=' . $row['displayid'], 'text' => __('Recent Log')); $row['buttons'][] = array('linkType' => 'divider'); } if ($row['modifypermissions'] == 1) { // Display Groups $row['buttons'][] = array('id' => 'display_button_group_membership', 'url' => 'index.php?p=display&q=MemberOfForm&DisplayID=' . $row['displayid'], 'text' => __('Display Groups')); // Permissions $row['buttons'][] = array('id' => 'display_button_group_membership', 'url' => 'index.php?p=displaygroup&q=PermissionsForm&DisplayGroupID=' . $row['displaygroupid'], 'text' => __('Permissions')); // Version Information $row['buttons'][] = array('id' => 'display_button_version_instructions', 'url' => 'index.php?p=displaygroup&q=VersionInstructionsForm&displaygroupid=' . $row['displaygroupid'] . '&displayid=' . $row['displayid'], 'text' => __('Version Information')); $row['buttons'][] = array('linkType' => 'divider'); } if ($row['edit'] == 1) { // Wake On LAN $row['buttons'][] = array('id' => 'display_button_wol', 'url' => 'index.php?p=display&q=WakeOnLanForm&DisplayId=' . $row['displayid'], 'text' => __('Wake on LAN')); } // Assign this to the table row $rows[] = $row; } Theme::Set('table_rows', $rows); $output = Theme::RenderReturn('table_render'); $response->SetGridResponse($output); $response->refresh = Kit::GetParam('filter_autoRefresh', _REQUEST, _INT, 0); $response->Respond(); }
/** * 実行 */ protected function perform() { // 案件ID $ankenId = $this->_request['aid']; // モデル $m =& $this->_model; // フォーム初期化 $m->Result_ClientReportDaily_initFormData(); if (isset($this->_request['search']) == true || $this->_isDownload == true) { // 日にちの空データを作成 $from = $this->_like['from']; $to = $this->_like['to']; $blank = DateManager::getArrayDaily($ankenId, $from, $to); // キャンペーンコード $code = $this->_anken['campaign_code']; // PVデータ $dataPv =& $m->getDailyPv($code, $this->_like); // 成果データ $dataSeika =& $m->Result_ClientReportDaily_getDailySeika($code, $this->_like); // マージ $formData =& $m->counting($blank, $dataPv, $dataSeika); // テンプレート変数追加 $this->_dataFrom['show'] = true; $this->_dataFrom['list'] =& $formData; } // モデル内の値をテンプレートに設定 $d =& $m->getFormData(); $this->appendDataFrom($d); /////////////////////////////////////////////// // 拡張リンク用のカスタム処理 /////////////////////////////////////////////// $tmpl = $m->Result_ClientReportDaily_getExtraLinkTmplPath($ankenId); $this->_dataFrom["extra_link_path"] = $tmpl; }
/** * 行を処理します。 */ private function &actionLine($useActionId, $code, &$keys, &$values) { // 無視するぎょうは return null します。 // 致命的なエラーで行処理を中断する場合は例外をスローします。 try { // 空白行は無視します if (empty($values) == true) { return null; } // 例外配列初期化 $eList = array(); // 配列の数が合わない if (count($keys) != count($values)) { //↓↓========nm00137 start=================================== //配列の数が合わないの場合、配列エラーのメッセージ表示 $this->_dataFrom['showMismatchErr'] = 'true'; //↑↑===========nm00137 end================================== $e = new ItemCountMismatchException(); $eList[] = $e; // エラー表示するためのダミーデータ $data = 1; // 処理中断 throw $e; } // 連想配列作成 $data = array_combine($keys, $values); /////////////////////////////// // 任意のIDから「nm」削除 /////////////////////////////// $addNm = intval($this->_anken['client_user_id_add_nm']); if (is_int($addNm) === true && $addNm == 1) { $clientUserId = $data['client_user_id']; if (substr($clientUserId, 0, 2) == 'nm') { $data['client_user_id'] = substr($clientUserId, 2); } } /////////////////////////////// // ゼロ埋め /////////////////////////////// $padding = intval($this->_anken['client_user_id_padding']); if (is_int($padding) === true && $padding != 0) { $wantLen = $padding; $len = strlen($data['client_user_id']); if ($len != 0 && $len != $wantLen) { $id = $data['client_user_id']; $id = str_pad($id, $wantLen, '0', STR_PAD_LEFT); $data['client_user_id'] = $id; } } /////////////////////////////// // !error 日付が不正の場合は、対象外 // !error 日付が現在より新しい場合は、対象外 /////////////////////////////// $data['accept_date'] = trim($data['accept_date']); //↓↓========nm00137 start=================================== //締め日チェック結果対象 $shimeDateCheckResult = null; //↑↑===========nm00137 end================================== if (ereg("^([0-9]{4})[\\/\\-]([0-9]{1,2})[\\/\\-]([0-9]{1,2})", $data['accept_date'], $regs) !== false && checkdate($regs[2], $regs[3], $regs[1]) == true) { $date = "{$regs['1']}-{$regs['2']}-{$regs['3']}"; $data['accept_date'] = $date; // メール送信用文面 if (in_array($date, $this->_acceptDateList) == false) { $this->_acceptDateList[$date] = $date; } //↓↓========nm00137 start=================================== /////////////////////////////// // !error 効締め日無効 /////////////////////////////// //案件締め日 $anken_shime_date = $this->_anken['shime_date']; //確認フラグ $confirmFlg = mb_strtoupper(trim($data['accept_flg'])); $confirmFlg = mb_convert_kana($confirmFlg, 'r'); //締め日チェック結果 $shimeDateCheckResult = DateManager::checkValidityShimeDate($anken_shime_date, $date, $confirmFlg); if ($shimeDateCheckResult['E'] == true) { $eList[] = new AcceptDateIsInvalidityException(); } //↑↑===========nm00137 end================================== } else { $eList[] = new AcceptDateFormatException(); } /////////////////////////////// // !error statusがY,D,Nではない場合は、対象外 /////////////////////////////// $flg = mb_strtoupper(trim($data['accept_flg'])); $flg = mb_convert_kana($flg, 'r'); if (strstr('YDN', $flg) == false) { $eList[] = new AcceptFlagFormatException(); } $data['accept_flg'] = $flg; // 該当数をカウント $this->_updateCount['sum']++; /////////////////////////////// // !continue 保留のため更新しません。 /////////////////////////////// if ($flg == 'N') { // 保留行を表示しないようにします $this->_updateCount['N']++; $eList = array(); $eList[] = new AcceptFlagIsSuspensionException(); //--------------------------------------------------- // N:保留のため処理終了→表示用処理 //--------------------------------------------------- $d["data"] =& $data; $d["eListCount"] = count($eList); $d["eList"] =& $eList; return $d; } else { if ($flg == 'Y') { $data['int_accept_flg'] = 1; } else { if ($flg == 'D') { $data['int_accept_flg'] = 0; } } } if ($useActionId == false) { //----------------------------------------------------- // !error client_user_id がNULLの場合は、対象外 //----------------------------------------------------- $data['client_user_id'] = trim($data['client_user_id']); if (empty($data['client_user_id'])) { $eList[] = new ClientUserIdNotFountException(); } //----------------------------------------------------- // !error client_user_idがDBに存在しない場合は、対象外 //----------------------------------------------------- $m =& $this->_model; $target =& $m->Result_ClientReportResultUpload_getTargetSeika($code, $data['client_user_id']); $count = count($target); if ($count == 0) { // 該当する成果無し $eList[] = new SeikaNotFountException(); } else { if ($count != 1) { // 該当する複数有り $e = new SeikaNotFountException("複数({$count}項目) 該当します。"); $eList[] = $e; $this->_updateCount['E']++; // 処理中断 throw $e; } } //----------------------------------------------------- // !error 既にuidで更新されていれば、対象外 //----------------------------------------------------- $flg = $target[0]['accept_flg']; if (strstr('01', $flg) != false) { $eList[] = new SeikaIsAcceptedException(); } //-------------------------------------------------- // DB update //-------------------------------------------------- if (count($eList) == 0) { //↓↓========nm00137 start=================================== //月度カウントアップ if ($shimeDateCheckResult != null) { $this->_updateCount['Y_1'] += $shimeDateCheckResult['Y_1']; $this->_updateCount['Y_2'] += $shimeDateCheckResult['Y_2']; $this->_updateCount['D_1'] += $shimeDateCheckResult['D_1']; $this->_updateCount['D_2'] += $shimeDateCheckResult['D_2']; } //↑↑===========nm00137 end================================== // update $clientUserId = $data['client_user_id']; $date = $data['accept_date']; $flg = $data['int_accept_flg']; //↓↓========nm00137 start=================================== //データチェックの場合、DB更新不要 if ($this->_dataFrom['is_data_check'] != true) { $m->Result_ClientReportResultUpload_update($code, $clientUserId, $flg, $date); } //↑↑===========nm00137 end================================== // カウントアップ if ($flg == 1) { $this->_updateCount['Y']++; } else { if ($flg == 0) { $this->_updateCount['D']++; } } } else { $this->_updateCount['E']++; } } else { //----------------------------------------------------- // !error action_id がNULLの場合は、対象外 //----------------------------------------------------- $data['action_id'] = trim($data['action_id']); if (empty($data['action_id'])) { $eList[] = new ActionIdNotFountException(); } //----------------------------------------------------- // !error seika_idがDBに存在しない場合は、対象外 //----------------------------------------------------- $m =& $this->_model; // 成果IDを取得 $prefix = $this->_anken['id_prefix']; $actionId = $data['action_id']; $sessionId = $m->detachPrefixActionId($prefix, $actionId); $target =& $m->Result_ClientReportResultUpload_getTargetSeikaBySessionId($code, $sessionId); $count = count($target); if ($count == 0) { // 該当する成果無し $eList[] = new SeikaNotFountException(); } else { if ($count != 1) { // 該当する複数有り $e = new SeikaNotFountException("複数({$count}項目) 該当します。"); $eList[] = $e; $this->_updateCount['E']++; // 処理中断 throw $e; } } //----------------------------------------------------- // !error 既にuidで更新されていれば、対象外 //----------------------------------------------------- $flg = $target[0]['accept_flg']; if (strstr('01', $flg) != false) { $eList[] = new SeikaIsAcceptedException(); } //-------------------------------------------------- // DB update //-------------------------------------------------- if (count($eList) == 0) { //↓↓========nm00137 start=================================== //月度カウントアップ if ($shimeDateCheckResult != null) { $this->_updateCount['Y_1'] += $shimeDateCheckResult['Y_1']; $this->_updateCount['Y_2'] += $shimeDateCheckResult['Y_2']; $this->_updateCount['D_1'] += $shimeDateCheckResult['D_1']; $this->_updateCount['D_2'] += $shimeDateCheckResult['D_2']; } //↑↑===========nm00137 end================================== // update $date = $data['accept_date']; $flg = $data['int_accept_flg']; //↓↓========nm00137 start=================================== //データチェックの場合、DB更新不要 if ($this->_dataFrom['is_data_check'] != true) { $m->Result_ClientReportResultUpload_updateBySessionId($code, $sessionId, $flg, $date); } //↑↑===========nm00137 end================================== // カウントアップ if ($flg == 1) { $this->_updateCount['Y']++; } else { if ($flg == 0) { $this->_updateCount['D']++; } } } else { $this->_updateCount['E']++; } } } catch (Exception $e) { // 処理中断した場合ここを通ります // 想定してない例外が発生した場合ここを通ります $this->log->fatal($e); } //--------------------------------------------------- // 表示用処理 //--------------------------------------------------- $d["data"] =& $data; $d["eListCount"] = count($eList); $d["eList"] =& $eList; return $d; }
$query_selmenun = "SELECT *\n\tFROM " . $GLOBALS['prefix_lms'] . "_htmlfront\n\tWHERE id_course = '" . $id_dupcourse . "' "; $result_selmenun = sql_query($query_selmenun); while ($list_selmenun = sql_fetch_array($result_selmenun)) { $query_dupmen = "INSERT INTO " . $GLOBALS['prefix_lms'] . "_htmlfront\n\t\t(id_course, textof)\n\t\tVALUES\n\t\t('" . $new_course_dup . "', '" . mysql_escape_string($list_selmenun['textof']) . "')"; $result_dupmen = sql_query($query_dupmen); } //Util::jump_to('index.php?modname=course&op=course_list&result=ok_course'); return true; } switch ($op) { case "course_autocomplete": require_once _lms_ . '/lib/lib.edition.php'; require_once _lms_ . '/lib/lib.date.php'; require_once _base_ . '/lib/lib.json.php'; $ed_man = new EditionManager(); $dt_man = new DateManager(); $json = new Services_JSON(); $output = array('courses' => array()); $filter = Get::req('query', DOTY_STRING, ""); $results = Get::req('results', DOTY_INT, Get::sett('visuItem', 25)); if ($filter != "") { $query = "SELECT idCourse, code, name, course_type, course_edition FROM %lms_course " . " WHERE code LIKE '%" . $filter . "%' OR name LIKE '%" . $filter . "%' ORDER BY code, name " . ($results > 0 ? " LIMIT 0, " . (int) $results : ""); $res = sql_query($query); if ($res) { while (list($id_course, $code, $name, $course_type, $course_edition) = sql_fetch_row($res)) { //construct record for course instance $record = array('cname' => ($code != "" ? '[' . $code . '] ' : '') . $name, 'id_course' => $id_course, 'code' => $code, 'name' => $name, 'code_highlight' => Layout::highlight($code, $filter), 'name_highlight' => Layout::highlight($name, $filter)); //detect if the course is of type classroom or has editions //TO DO: optimization, do not put queries in iterations if ($course_type == 'elearning' && $course_edition > 0) { $record['has_editions'] = true;