/** * 既存のDBからモデルファイルを自動生成する **/ public static function __setup_generate_model__(Request $request, $value) { if (!$request->is_vars('tables')) { throw new RuntimeException('tables required'); } $model_path = $request->is_vars('model_path') ? $request->in_vars('model_path') : path('libs/model'); $tables = $request->in_vars('tables'); $tables = strpos(',', $tables) === false ? array($tables) : explode(',', $tables); foreach ($tables as $table) { $dao = Dao::instant($table, $value); $props = $dao->get_columns(); $properties = array(); foreach ($props as $prop_name) { $property = new ModelProperty(); $property->name($prop_name); foreach (self::$anons as $a) { $anon = $dao->a($prop_name, $a); if (isset(self::$defaults[$prop_name]) && self::$defaults[$prop_name] == $anon) { continue; } if (!is_null($anon)) { $property->annotation($a, $anon); } } $properties[] = $property; } $class_name = preg_replace('/_(.)/e', 'ucfirst("\\1")', ucfirst(strtolower($table))); $template = new Template(); $template->vars('properties', $properties); $template->vars('class_name', $class_name); $filename = File::path($model_path, $class_name . '.php'); $src = "<?php\n" . $template->read(module_templates('model.php')); File::write($filename, $src); // unset $dao = $template = $properties = $property = null; unset($dao); unset($template); unset($properties); unset($property); } }
public function login_condition(Request $request) { if ($request->user() instanceof OpenpearMaintainer) { return true; } if ($request->is_post() && $request->is_vars('login') && $request->is_vars('password')) { try { $user = C(OpenpearMaintainer)->find_get(Q::ob(Q::b(Q::eq('name', $request->in_vars('login'))), Q::b(Q::eq('mail', $request->in_vars('login'))))); if ($user instanceof OpenpearMaintainer) { if ($user->certify($request->in_vars('password'))) { $request->user($user); return true; } else { Exceptions::add(new Exception('password is incorrect'), 'password'); } } } catch (Exception $e) { Log::debug($e); } } return false; }
public static function login(Request &$request) { Pea::begin_loose_syntax(); require_once 'Auth/OpenID/Consumer.php'; require_once 'Auth/OpenID/FileStore.php'; require_once 'Auth/OpenID/SReg.php'; require_once 'Auth/OpenID/PAPE.php'; if ($request->in_vars('openid_url') != "" || $request->in_vars('openid_verify')) { Log::debug("begin openid auth: " . $request->in_vars('openid_url')); // OpenID Auth $consumer = new Auth_OpenID_Consumer(new Auth_OpenID_FileStore(work_path('openid'))); if ($request->is_vars('openid_verify')) { $response = $consumer->complete($request->request_url()); if ($response->status == Auth_OpenID_SUCCESS) { return $response->getDisplayIdentifier(); } } else { $auth_request = $consumer->begin($request->in_vars('openid_url')); if (!$auth_request) { throw new RuntimeException('invalid openid url'); } $sreg_request = Auth_OpenID_SRegRequest::build(array('nickname'), array('fullname', 'email')); if ($sreg_request) { $auth_request->addExtension($sreg_request); } if ($auth_request->shouldSendRedirect()) { $redirect_url = $auth_request->redirectURL(url(), $request->request_url(false) . '?openid_verify=true'); if (Auth_OpenID::isFailure($redirect_url)) { throw new RuntimeException("Could not redirect to server: {$redirect_url->message}"); } else { $request->redirect($redirect_url); } } else { $form_html = $auth_request->htmlMarkup(url(), $request->request_url(false) . '?openid_verify=true', false, array('id' => 'openid_message')); if (Auth_OpenID::isFailure($form_html)) { throw new RuntimeException("Could not redirect to server: {$form_html->message}"); } else { echo $form_html; exit; } } } } Pea::end_loose_syntax(); return null; }
/** * デバッグアウトを制御する * on / off * -level debug / info / warn /error * -exception on / off */ public static function __setup_log__(Request $req, $value) { $src = File::read(App::path("__settings__.php")); $level = $req->in_vars("level", Log::current_level()); $log = 'Log::config_level("' . $level . '",' . ($value == "on" ? "true" : "false") . ');'; if (preg_match("/Log::config_level\\(.+;/", $src, $match)) { $src = str_replace($match[0], $log, $src); } else { $src = $src . "\n" . $log; } if ($req->is_vars("exception")) { $log = 'Log::config_exception_trace(' . ($req->in_vars("exception") == "on" ? "true" : "false") . ');'; if (preg_match("/Log::config_exception_trace\\(.+;/", $src, $match)) { $src = str_replace($match[0], $log, $src); } else { $src = $src . "\n" . $log; } } self::update_settings($src); }