/** * Custom variables for the checkout module. Custom variables are stored in the following format: * array(variable_id, variable_name, variable_type, help_text, default_value, required, [variable_options], [multi_select], [multi_select_height]) * variable_type types are: text,number,password,radio,dropdown * variable_options is used when the variable type is radio or dropdown and is a name/value array. */ public function setCustomVars() { $this->_variables['scheduler'] = array('name' => GetLang('QuickBooksScheduler'), 'type' => 'dropdown', 'help' => GetLang('QuickBooksSchedulerHelp'), 'default' => 'never', 'savedvalue' => array(), 'required' => true, 'options' => array(GetLang('QuickBooksScheduler5min') => '5', GetLang('QuickBooksScheduler10min') => '10', GetLang('QuickBooksScheduler15min') => '15', GetLang('QuickBooksScheduler30min') => '30', GetLang('QuickBooksScheduler1hour') => '60', GetLang('QuickBooksScheduler2hour') => '120', GetLang('QuickBooksScheduler6hour') => '360', GetLang('QuickBooksScheduler12hour') => '720', GetLang('QuickBooksScheduler1day') => '1440', GetLang('QuickBooksScheduler2day') => '2880', GetLang('QuickBooksScheduler1week') => '10080'), 'multiselect' => false); $this->_variables['permission'] = array('name' => GetLang('QuickBooksShowPermissionList'), 'type' => 'custom', 'callback' => 'showPermissionList', 'javascript' => $this->showPermissionListJS(), 'help' => GetLang('QuickBooksShowPermissionListHelp')); $GLOBALS['AccountExtraJS'] = ''; if (ModuleIsConfigured($this->getid())) { $this->_variables['sync'] = array('heading' => GetLang('QuickBooksShowSyncHeading'), 'name' => GetLang('QuickBooksShowSync'), 'type' => 'custom', 'callback' => 'showSyncList', 'help' => GetLang('QuickBooksShowSyncHelp')); $this->_variables['spool'] = array('name' => GetLang('QuickBooksShowSpoolList'), 'type' => 'custom', 'callback' => 'showSpoolList', 'javascript' => '', 'help' => GetLang('QuickBooksShowSpoolListHelp'), 'notemplate' => true); $GLOBALS['AccountExtraJS'] = '$("#qb-help-box-password").html("' . $this->_password . '"); $("#qb-help-box").show();'; } $GLOBALS['AccountExtraJS'] .= '; $("#accounting_quickbooks_scheduler").css("width", "305px");'; }
public function update_simplepay_checkout_module() { if (!ModuleIsConfigured('checkout_paysimple')) { return true; } GetModuleById('checkout', $module, 'checkout_paysimple'); // Check to see if the module hasn't already been updated $value = $module->GetValue('merchantkey'); if (!is_null($value) && trim($value) !== '') { return true; } // OK, it hasn't been updated yet, so do so $keyFile = ISC_BASE_PATH . "/modules/checkout/paysimple/lib/keyHalf.txt"; if (!file_exists($keyFile)) { return true; } if (!is_readable($keyFile)) { $this->SetError('Unable to read the key file ' . GetConfig('AppPath') . '/modules/checkout/paysimple/lib/keyHalf.txt. Please CHMOD it to 646 or 666.'); return false; } $newKey = @file_get_contents(ISC_BASE_PATH . "/modules/checkout/paysimple/lib/keyHalf.txt"); $newKey = trim($newKey); if ($newKey == '') { return true; } // Make sure you get the 'static' part $newKey = Interspire_String::toUnixLineEndings($newKey); $newKey = explode("\n", $newKey); $newKey = $newKey[0]; $module->setMerchantKey($newKey); return true; }
/** * Get a list of the specified type of modules available. Can filter so only enabled, or only configured modules * are returned. * * @param string The type of module (analytics, notifications, checkout or shipping). * @param boolean Filter out disabled modules. * @param boolean Filter out modules that aren't configured. * @param boolean Should we also sort the modules into mutex groups. * @return array The array of modules. */ function GetAvailableModules($type, $OnlyEnabledModules = false, $OnlyConfiguredModules = false, $SortMutuallyExclusive = false) { $valid_types = array('accounting', 'analytics', 'checkout', 'notification', 'shipping', 'currency', 'livechat', 'rule', 'addon'); if (!in_array($type, $valid_types)) { return array(); } if ($type == 'addon') { $dir = ISC_BASE_PATH . "/addons/"; } else { $dir = ISC_BASE_PATH . "/modules/" . $type; } $modules = array(); $matches = array(); $directories = scandir($dir); if (!is_array($directories)) { return array(); } foreach ($directories as $directory) { // Skip over anything we don't want if ($directory == "." || $directory == ".." || $directory == ".svn" || !is_dir($dir . "/" . $directory)) { continue; } if ($type == 'addon') { $file = "addon." . $directory . ".php"; } else { $file = "module." . $directory . ".php"; } if (!file_exists($dir . "/" . $directory . "/" . $file)) { continue; } $module_name = $directory; // If we only want configured modules and this module hasn't been configured, well then skip over it $moduleId = $type . '_' . $module_name; if ($OnlyConfiguredModules && !ModuleIsConfigured($moduleId)) { continue; } $class_name = isc_strtoupper($type . '_' . $module_name); include_once $dir . "/" . $directory . "/" . $file; if (!class_exists($class_name)) { continue; } $module = new $class_name(); if (is_object($module)) { $errors = array(); if (method_exists($module, "LECheck") && $module->LECheck() === false) { continue; } if (method_exists($module, "GetId") && method_exists($module, "GetName")) { $mod_details = array("id" => $module->GetId(), "name" => $module->GetName(), "enabled" => $module->IsEnabled(), "object" => $module); if ($OnlyEnabledModules) { if ($module->IsEnabled()) { // Nope, just as long as it's enabled $modules[] = $mod_details; } } else { $modules[] = $mod_details; } } } } usort($modules, "sort_modules"); if ($SortMutuallyExclusive) { usort($modules, "sort_modules_by_type"); } $GLOBALS[$type . '_modules'] =& $modules; return $modules; }
protected function showPermissionList($moduleid) { $output = '<div style="float:left;"><input type="hidden" id="' . $moduleid . '[permission]" name="' . $moduleid . '[permission]" value="" /><select size="11" multiple="multiple" name="tmpperm" id="tmpperm" class="Field300 ISSelectReplacement">'; $mask = $this->getPermissionMask(); $config = ModuleIsConfigured($this->getid()); foreach ($this->_permissionset as $cat => $set) { foreach ($set as $sub => $flag) { if (!$config || ($flag & $mask) == $flag) { $checked = 'selected="selected"'; } else { $checked = ''; } $output .= '<option value="' . $flag . '" ' . $checked . '>' . GetLang('QuickBooksPerm' . ucfirst(strtolower($cat)) . ucfirst(strtolower($sub))) . '</option>'; } } $output .= '</select><br style="clear:left" /></div>'; return $output; }
/** * Check if a particular addon has been set up. * * @param string The ID of the addon. * @return boolean True if the addon has been set up (configured) false if not. */ function AddonsModuleIsConfigured($id) { return ModuleIsConfigured($id); }
/** * Build the custom field * * Method will build the custom field used in the settings admin * * @access public * @param string $id The field ID * @return string The built field HTML on success, empty string on error */ public function buildCustomFieldCallback($id) { if (trim($id) == '') { return ''; } switch (isc_strtolower($id)) { case "orderoption": $orderOption = $this->getValue("orderoption"); if ($orderOption == "order") { $GLOBALS["OrderTypeReceiptSelected"] = ""; $GLOBALS["OrderTypeOrderSelected"] = " selected"; } else { $GLOBALS["OrderTypeReceiptSelected"] = " selected"; $GLOBALS["OrderTypeOrderSelected"] = ""; } return $this->ParseTemplate("order.type", true); break; case "newprodcategoryidx": $GLOBALS["ISC_CLASS_ADMIN_CATEGORY"] = GetClass("ISC_ADMIN_CATEGORY"); if (!ModuleIsConfigured($this->getid())) { $newProdCategoryIDX = array(); $query = "SELECT categoryid FROM [|PREFIX|]categories"; $result = $GLOBALS["ISC_CLASS_DB"]->Query($query); while ($row = $GLOBALS["ISC_CLASS_DB"]->Fetch($result)) { $newProdCategoryIDX[] = $row["categoryid"]; } } else { $newProdCategoryIDX = $this->getValue("newprodcategoryidx"); if (isId($newProdCategoryIDX)) { array($newProdCategoryIDX); } if (!is_array($newProdCategoryIDX)) { $newProdCategoryIDX = array(); $newProdCategoryIDX[] = $this->getValue("newprodcategoryidx"); } } $newProdCategoryIDX = array_filter($newProdCategoryIDX, "isId"); $GLOBALS["CategoryOptions"] = $GLOBALS["ISC_CLASS_ADMIN_CATEGORY"]->GetCategoryOptions($newProdCategoryIDX, "<option %s value='%d'>%s</option>", "selected=\"selected\"", "", false); return $this->ParseTemplate("product.category", true); break; default: return ""; break; } }