function b_update_notice($options) { global $xoopsDB, $xoopsUser; $pkg = $xoopsDB->prefix('update_package'); $res = $xoopsDB->query("SELECT a.pname, b.name, b.pversion\nFROM {$pkg} a, {$pkg} b WHERE a.pversion='HEAD' AND a.parent=b.pkgid"); $pkgs = array(); while ($data = $xoopsDB->fetchArray($res)) { $pkgs[$data['pname']] = array('name' => $data['name'], 'pversion' => $data['pversion']); } $modpath = dirname(dirname(__FILE__)); $dirname = basename($modpath); include_once $modpath . '/functions.php'; $module_handler =& xoops_gethandler('module'); $module =& $module_handler->getByDirname($dirname); // only for admin this module if (!is_object($xoopsUser) || !$xoopsUser->isAdmin($module->getVar('mid'))) { return array('admin' => false); } $config_handler =& xoops_gethandler('config'); $config =& $config_handler->getConfigsByCat(0, $module->getVar('mid')); $svr = $config['update_server']; if (!preg_match('/^\\w+:/', $svr)) { return null; } $url = $svr . "/modules/server/list.php?pkg=all&ext=1"; $block = array('admin' => true, 'dirname' => $dirname); $updates = array(); if (empty($pkgs)) { $msg = _BL_UPDATE_NOPKGS; } else { $list = file_get_url($url, 'list'); if (empty($list)) { return null; } foreach (split("\n", $list) as $ln) { if (empty($ln)) { continue; } list($pname, $ver, $date, $vcheck, $name) = split_csv($ln); if (isset($pkgs[$pname])) { if ($ver != $pkgs[$pname]['pversion']) { $time = strtotime_tz($date); $date = formatTimestamp($time, 'm/d h:i'); $updates[] = array('pname' => $pname, 'pversion' => $ver, 'time' => $time, 'date' => $date, 'vcheck' => $vcheck, 'name' => $name); } } } $msg = empty($updates) ? "" : _BL_UPDATE_EXIST; } $block['message'] = $msg; $block['updates'] = $updates; return $block; }
function pkg_info_csv($ln) { $ln = trim($ln); if (empty($ln)) { return false; } $F = split_csv(trim($ln)); return array('pname' => $F[0], 'pversion' => $F[1], 'dtime' => strtotime_tz($F[2]), 'vcheck' => $F[3], 'name' => $F[4], 'delegate' => empty($F[5]) ? "" : $F[5]); }
function process_form(module_add_view $view, module_add_form $form, $formdata) { global $DB; // Course list $courserows = split_csv($form->get_file_content('courses')); // Check basic validity of course list file $i = 1; foreach ($courserows as $courserow) { if (count($courserow) != 2) { $view->maincsv_error('Incorrect number of fields on line ' . $i); } $i++; } // Parameters XML file $moduleparamsstr = $form->get_file_content('moduleparams'); if (empty($moduleparamsstr)) { $moduleparamsstr = '<paramitems></paramitems>'; } libxml_use_internal_errors(true); $paramsxmlobj = simplexml_load_string($moduleparamsstr, null, LIBXML_NOCDATA); $errors = libxml_get_errors(); if (count($errors) > 0) { $errorstr = ''; foreach ($errors as $error) { $errorstr .= '\\non line ' . ($error->line - 1) . ' - ' . $error->message; } $view->moduleparams_error($errorstr); } else { $numparamitems = count($paramsxmlobj->paramitem); if ($numparamitems != 1 && $numparamitems != count($courserows)) { $view->moduleparams_error('Module parameters file must have exactly one or same number of items as course list file'); } } // If permissions override file exists, check it is valid $permissionscsvrows = split_csv($form->get_file_content('permsfile')); $capabilities_check = new capabilities_check(); $i = 1; foreach ($permissionscsvrows as $csvrow) { if (!$capabilities_check->valid_role($csvrow[0])) { $msg = 'Invalid role ID found on line ' . $i . ', ' . $csvrow[0]; $view->permissions_override_error($msg); } else { if (!$capabilities_check->valid_capability($csvrow[1])) { $msg = 'Invalid capability found on line ' . $i . ', ' . $csvrow[1]; $view->permissions_override_error($msg); } else { if (!$capabilities_check->valid_permission($csvrow[2])) { $msg = 'Invalid permission found on line ' . $i . ', ' . $csvrow[2]; $view->permissions_override_error($msg); } } } $i++; } $module = $formdata->module; $atstart = isset($formdata->atstart) ? true : false; $view->output_processing_start(); $i = 0; foreach ($courserows as $courserow) { // If course ID is set, pass this to course_mod_add otherwise get course IDs for module code $courseid = (int) $courserow[0]; if ($courseid > 0) { $courseIDs = array($courseid); } else { $like = $courserow[1] . '%'; $rows = $DB->get_records_sql('SELECT id FROM {course} WHERE shortname LIKE ?', array($like)); $courseIDs = array(); foreach ($rows as $row) { $courseIDs[] = $row->id; } } // Select correct module parameters for current course if ($numparamitems == 1) { $moduleparams = $paramsxmlobj->paramitem[0]; } else { $moduleparams = $paramsxmlobj->paramitem[$i]; } $visible = isset($formdata->visible) ? 1 : 0; foreach ($courseIDs as $courseID) { $tablefields = array($courseID, $courserow[1]); $ret = course_mod_add::add($module, $courseID, $atstart, (int) $formdata->ifexists, $moduleparams, 0, $visible, $permissionscsvrows); if (!$ret[0]) { $tablefields[] = $ret[1]; } else { $tablefields[] = 'Done'; } $view->output_processing_row($tablefields); sleep(1); } $i++; } $view->output_processing_end(); }