function s_cookie_desue() { parse_str($_COOKIE['SUE'], $sues); parse_str($_COOKIE['SUP'], $sups); if (!isset($sups['et']) || !isset($sues['es']) || !($pki = s_cookie_pki()) || $sups['et'] < s_action_time() || $sues['es'] !== md5($_COOKIE['SUP'] . md5($pki))) { return false; } return $sups; }
function s_weibo_ago($time) { if (s_bad_id($time)) { $time = s_action_time(); } $second = s_action_time() - $time; if (($diff = intval($second / (60 * 60 * 24))) > 0) { return $diff . "天前"; } else { if (($diff = intval($second / (60 * 60))) > 0) { return $diff . "小时前"; } else { if (($diff = intval($second / 60)) > 0) { return $diff . "分钟前"; } } } return "刚刚发表"; }
function s_upload_url($name, $size = false, $types = false) { if (!($file = s_upload_file($name))) { return false; } //生成目录 $dir = 'shframework/' . date('Y-m-d') . '/'; //生成文件名 //原生的扩展名不行,一定需要换成jpg的 //$fname = md5($dir . $file['name']) . '.' . substr($file['type'], strpos($file['type'], '/') + 1); $fname = s_action_time() . md5($dir . $file['name']) . '.jpg'; $vfs = new VFS_dpool_storage(); $ret = $vfs->write($dir, $fname, $file['tmp_name'], true); //检查是否正确 if (is_a($ret, "PEAR_Error")) { var_dump($ret); return false; } return SINA_UPLOAD_DIR . $dir . $fname; }
function s_upload_2vfs($data, $name = false, $path = false) { if ($path === false) { //生成目录 $path = date('Y-m-d'); } if ($name === false) { //生成文件名 $name = s_action_time(); } //原生的扩展名不行,一定需要换成jpg的 //$fname = md5($dir . $file['name']) . '.' . substr($file['type'], strpos($file['type'], '/') + 1); $fname = s_action_time() . '_' . md5($path . $name) . '.jpg'; $vfs = new VFS_dpool_storage(); $ret = $vfs->write('shframework/' . $path, $fname, $file['tmp_name'], true); //检查是否正确 if (is_a($ret, "PEAR_Error")) { return false; } return SINA_UPLOAD_DIR . $path . $fname; }
function &s_watermark(&$photo, &$watermark, $x = 0, $y = 0) { if (s_bad_gd() || s_bad_string($photo) || s_bad_string($watermark)) { return s_err_arg(); } //获取底板图片和水印图片 if (false === ($plate = @imagecreatefromjpeg($photo)) || false === ($water = @imagecreatefrompng($watermark))) { return s_err_log('image error.'); } //计算水平间隔 //检查图片大小 $p_w = imagesx($plate); $p_h = imagesy($plate); $w_w = imagesx($water); $w_h = imagesy($water); if ($p_w < $w_w || $p_h < $w_h) { //消毁对象 imagedestroy($plate); imagedestroy($water); return s_err_log('water height or width more than plate'); } //TODO: 使用临时目录 $time = s_action_time(); $path = '/tmp/'; $path .= defined('APP_NAME') ? APP_NAME : date('Y-m-d', $time) . '_auto'; if (!is_dir($path) && !mkdir($path, 0755, true)) { return false; } $file = $path . '/' . $time . '_' . rand(1, 10000) . '.jpg'; //合并图片 if (false === imagecopy($plate, $water, $p_w - $w_w, $p_h - $w_h, 0, 0, $w_w, $w_h) || false === imagejpeg($plate, $file)) { return s_err_log('unsuccess to {$file}.'); } //消毁对象 imagedestroy($plate); imagedestroy($water); //返回图片地址或者图片数据 return $file; }
function s_log_trace(&$trace, &$msg = false) { if (!is_array($trace)) { return false; } $msg = $msg ? ' =>' . $msg : ''; $args = array(); $list = isset($trace['args']) ? $trace['args'] : array(); foreach ($list as &$arg) { $args[] = str_replace("\n", '', print_r($arg, true)); unset($arg); } //将debug_traceback转换成字符串 return sprintf("[%s][LOG]:%s [%d]:%s(%s) %s", date('m-d H:i:s', s_action_time()), $trace['file'], $trace['line'], $trace['function'], implode(', ', $args), $msg); }
function s_action_file($path = false) { if ($path === false) { //随机产生一个文件 $path = s_action_time() . '_' . rand(); } if (substr($path, 0, 1) !== '/') { //非绝对路径,处理成绝对路径 if (false === ($dir = s_action_dir()) || s_bad_string($dir['dir'], $dir)) { //获取默认临时目录失败 return false; } //生成绝对路径 $path = $dir['dir'] . $path; } //清空已存在的文件 return false === file_put_contents($path, '') ? false : $path; }
function s_action_file($path = false) { if ($path === false) { //获取系统当前的临时目录 $path = $_SERVER['SINASRV_CACHE_DIR'] . (defined('APP_NAME') ? APP_NAME : 'smarty_autocreate'); } //随机产生一个文件 $path .= s_action_time() . '_' . rand(0, 10000); //如果定入成功,返回文件路径 return false === file_put_contents($path, '') ? false : $path; }