case 'js':
echo '<script type="text/javascript" src="'. $f. '"></script>'."\n";
break;
+ case 'css':
case 'css':
echo '<link rel="stylesheet" href="'. $f. '"/>'."\n";
break;
/**
* usage in template
- * {outputCssDir(#{Hydra/templates/images/css/#,#Hydra.js",#.......#)}
+ * {outputCSSDir(#{Hydra/templates/images/css/#,#Hydra.js",#.......#)}
*/
- function outputCssDir($path)
+ function outputCSSDir($path)
{
$relpath = $this->rootURL . '/' . $path .'/';
+ function outputSCSS($smod)
+ {
+ // we cant output non-cached versions of this....
+ $ff = HTML_FlexyFramework::get();
+ $fp = "{$this->rootDir}/Pman/$smod/scss/{$smod}.scss";
+ // var_dump($fp);
+ if (!file_exists($fp)) {
+ return;
+ }
+
+ $ar = glob(dirname($fp) . '/*.scss');
+ $maxtime = 0;
+ foreach($ar as $fn) {
+ $maxtime=max($maxtime, filemtime($fn));
+ }
+
+
+
+ //print_r($relfiles);
+
+ require_once 'Pman/Core/Asset.php';
+ $compiledir = Pman_Core_Asset::getCompileDir('css', '', true);
+
+
+ if (!file_exists($compiledir)) {
+ mkdir($compiledir,0700,true);
+ }
+
+
+
+
+ $output = date('Y-m-d-H-i-s-', $maxtime). $smod .'-'.md5(serialize(array($this->baseURL, $ar))) .'.css';
+
+ $asset = $ff->project == 'Pman' ? '/Core/Asset/css/' : '/Asset/css/';
+
+ // where are we going to write all of this..
+ // This has to be done via a
+
+
+
+ if ( !file_exists($compiledir.'/'.$output) || !filesize($compiledir.'/'.$output)) {
+
+
+
+ require_once 'System.php';
+ static $sassc = false;
+ if ($sassc === false) {
+ $sassc = System::which("sassc");
+ }
+ if (empty($sassc)) {
+ die("INSTALL sassc");
+ }
+
+ $fd = dirname($fp);
+
+
+ $cmd = "{$sassc} --style=compressed --sourcemap=auto -I {$fd} -I {$this->rootDir}/roojs1/scss/bootstrap $smod.scss {$compiledir}/{$output}";
+ //echo "$cmd\n"; echo `$cmd`;
+ `$cmd`;
+
+
+ clearstatcache();
+ if (!file_exists($compiledir.'/'.$output) ||
+ !filesize($compiledir.'/'.$routput)) {
+ echo "<!-- compile did not generate files : " . basename($compiledir) . "/{$output} -->\n";
+ echo "<script type=\"text/javascript\">alert('Failed to compile {$fp}');</script>\n";
+ return;
+ }
+
+ } else {
+ // echo "<!-- file already exists: {$basedir}/{$output} -->\n";
+ }
+
+
+ //$this->arrayToJsInclude( $files);
+ $this->assetArrayToHtml( array(
+ $this->baseURL.$asset. $output,
+
+ ),'css');
+
+ }
+
+
}
\ No newline at end of file
$month = $m > -1 ? date('Y-m') : date('Y-m', strtotime('LAST MONTH'));
return md5(implode(',' , array($month, $this->email , $this->passwd, $this->id)));
- }
+ }
+ /**
+ * When we generate autologin urls:
+ * eg. /Somesite/Test/12
+ * it will generate:
+ * /Somesite/Test/12/{datetime}/{sha256(url + expires_datetime + password)}
+ *
+ * eg. genAutoLoginURL($sub, $expires)
+ */
+ function genAutoLoginURL($url, $expires = false)
+ {
+ $expires = $expires === false ? strtotime("NOW + 1 WEEK") : $expires;
+ //echo serialize(array($url, $expires, $this->email, $this->passwd));
+ //echo hash('sha256', serialize(array($url, $expires, $this->email, $this->passwd)));
+
+ return $url.'/'.$this->id .'/'.$expires.'/'.
+ hash('sha256',
+ serialize(
+ array($url, $expires, $this->email,$this->passwd)
+ )
+ );
+
+ }
+
+ function validateAutoLogin($called)
+ {
+ $bits = explode("/",$called);
+ if (count($bits) < 4) {
+ return false; // unrelated.
+ }
+ $hash = array_pop($bits);
+ $time = array_pop($bits);
+
+ $id = array_pop($bits);
+ if (!is_numeric($time) || !is_numeric($id)) {
+ return false; // wrong format.
+ }
+ $u = DB_DataObject::Factory($this->tableName());
+ $u->get($id);
+ $url = implode("/", $bits);
+ if ($time < time()) {
+ return "Expired";
+ }
+ //echo serialize(array('/'.$url, $time, $u->email, $u->passwd));
+ //echo hash('sha256', serialize(array('/'.$url, $time, $u->email, $u->passwd)));
+ if ($hash == hash('sha256', serialize(array('/'.$url, $time*1, $u->email, $u->passwd)))) {
+ $u->login();
+ return $u;
+ }
+ return false;
+ }
+
function checkTwoFactorAuthentication($val)
{