示例#1
0
文件: Sitemap.php 项目: ssrsfs/blg
 public function load()
 {
     $this->_data = array();
     $host = 'http://' . $_SERVER['SERVER_NAME'];
     // This will retrieve all the content pages.
     if (Typeframe::Registry()->application('Content')) {
         $query = "SELECT uri, nickname,\tapplication FROM #__page";
         $rs = Typeframe::Database()->prepare($query);
         $rs->execute();
         while ($data = $rs->fetch_array()) {
             $this->_data[] = array('page' => $host . TYPEF_WEB_DIR . $data['uri'], 'uri' => $data['uri'], 'name' => $data['nickname'] != '' ? $data['nickname'] : $data['uri'], 'application' => $data['application']);
         }
     }
     // And the news pages.
     if (Typeframe::Registry()->application('News')) {
         $select = new BuildSql_Select();
         $select->table('#__news n');
         $select->leftJoin('#__news_category ncat', 'ncat.categoryid = n.categoryid');
         $select->field('n.*');
         $select->field('ncat.categoryname');
         $select->group('n.newsid');
         $select->order('n.pubdate DESC');
         $select->where('n.pubdate <= ?', Typeframe::Now());
         $rs = $this->db()->prepare($select->query());
         $rs->execute();
         while ($row = $rs->fetch_array()) {
             $uri = News::GetCategoryUri($row['categoryid']) . '/' . ($row['encodedtitle'] ? $row['encodedtitle'] : $row['newsid']);
             $this->_data[] = array('page' => $host . TYPEF_WEB_DIR . $uri, 'uri' => $uri, 'name' => $row['title'], 'application' => $row['categoryname']);
         }
     }
 }
示例#2
0
文件: Driver.php 项目: ssrsfs/blg
 public function output(PMDataNode $data)
 {
     $pm = new Pagemill($data->fork());
     //$pm->setVariableArray($this->settings);
     $db = Typeframe::Database();
     if (!isset($this->settings['driver'])) {
         //return '<div class="error"><p>Please provide a "driver" attribute on the pm:driver plugin.</p></div>';
         return '';
     }
     // Blank driver attributes count as nothing too.
     if (!$this->settings['driver']) {
         return '';
     }
     // I need to lookup this driver as a page and ensure it's a valid driver.
     $driver = (int) $this->settings['driver'];
     $rs = $db->prepare('SELECT uri, nickname, driver FROM #__page WHERE driver != "" AND pageid = ?');
     $rs->execute($driver);
     if (!$rs->recordcount()) {
         // No records found... just silently fail.
         return '';
     }
     $data = $rs->fetch_array();
     $pm->setVariable('link', TYPEF_WEB_DIR . $data['uri']);
     $pm->setVariable('title', $data['nickname']);
     $pm->setVariable('driver', $data['driver']);
     return $pm->writeText('<pm:include template="/plugins/driver.html" />');
 }
示例#3
0
文件: Plugin.php 项目: ssrsfs/blg
 public function output(Pagemill_Data $data, Pagemill_Stream $stream)
 {
     $db = Typeframe::Database();
     if ($this->hasAttribute('rules') && !Typeframe_Tag_Socket::ProcessRules($this->getAttribute('rules'))) {
         return '';
     }
     /*
      * Rules for loading the plugin:
      * 1. The plugid overrides other load settings.
      * 2. Load a plugin from the table if the name attribute matches an
      *    an admin-specified name.
      * 3. Create a generic plugin from a signature.
      * 4. If the plugin was loaded from the database, attribute settings
      *    override database settings.
      */
     $p = null;
     if ($this->getAttribute('plugid')) {
         $plugin = Model_Plug::Get($data->parseVariables($this->getAttribute('plugid')));
         if ($plugin->exists()) {
             $p = Typeframe::Registry()->getPluginSignature($plugin['plug']);
         }
     } else {
         if ($this->getAttribute('name')) {
             $plugins = new Model_Plug();
             $plugins->where('name = ?', $data->parseVariables($this->getAttribute('name')));
             $plugin = $plugins->getFirst();
             if ($plugin->exists()) {
                 $p = Typeframe::Registry()->getPluginSignature($plugin['plug']);
             } else {
                 $p = Typeframe::Registry()->getPluginSignature($this->getAttribute('name'));
             }
         }
     }
     if ($p) {
         $cls = $p->className();
         if (class_exists($cls)) {
             $settings = $this->settings;
             foreach ($this->attributes() as $k => $v) {
                 $settings[$k] = $data->parseVariables($v);
             }
             //$obj = new $cls($settings);
             $obj = new $cls('plugin', $settings, null);
             foreach ($this->children() as $child) {
                 $obj->appendChild($child);
             }
             $obj->process($data, $stream);
             foreach ($obj->children() as $child) {
                 $this->appendChild($child);
             }
             $obj->detach();
         } else {
             throw new Exception("Class '{$cls}' does not exist");
         }
     } else {
         throw new Exception("Plugin does not have a signature");
     }
 }
示例#4
0
文件: Submenu.php 项目: ssrsfs/blg
 public function output(Pagemill_Data $data, Pagemill_Stream $stream)
 {
     $data = $data->fork();
     if (!empty($this->attributes['menuplugid'])) {
         $menuplugid = $this->attributes['menuplugid'];
         $db = Typeframe::Database();
         $base = substr(Typeframe::CurrentPage()->uri(), STRLEN(TYPEF_WEB_DIR));
         if ($base == '') {
             $base = '/';
         }
         $search = new Model_Nav();
         $search->where('plugid = ?', $menuplugid);
         $search->where('url = ? OR url = ? OR url = ? OR url = ? OR url = ? OR url = ? OR pageid = ?', "~{$base}", "~{$base}/", "/{$base}", "/{$base}/", TYPEF_WEB_DIR . $base, TYPEF_WEB_DIR . $base . '/', Typeframe::CurrentPage()->pageid());
         foreach ($search->select() as $current) {
             $current['url'] = $this->_convertUrl($current['url']);
             $data->set('current', $current);
             $parentid = $current['parent'];
             $siblings = new Model_Nav();
             $siblings->where('plugid = ?', $menuplugid);
             $siblings->where('parent = ?', $parentid);
             $siblings->order('sortnum');
             $data['siblings'] = $siblings;
             /*$sibArray = array();
             		foreach ($siblings->select() as $sib) {
             			$sib['url'] = $this->_convertUrl($sib['url']);
             			$sibArray[] = $sib;
             		}
             		$data['siblings'] = $sibArray;*/
             if (!empty($this->attributes['showparent'])) {
                 $parent = $db->execute('SELECT * FROM #__nav WHERE itemid = ' . $parentid);
                 foreach ($parent as $par) {
                     $par['url'] = $this->_convertUrl($par['url']);
                     $data->set('parent', $par);
                 }
             }
             if (!empty($this->attributes['showchildren'])) {
                 $childArray = array();
                 $children = $db->execute('SELECT * FROM #__nav WHERE plugid = ' . $menuplugid . ' AND parent = ' . $current['itemid'] . ' ORDER BY sortnum');
                 foreach ($children as $chi) {
                     $chi['url'] = $this->_convertUrl($chi['url']);
                     $childArray[] = $chi;
                 }
                 $data['children'] = $childArray;
             }
         }
     }
     $this->pluginTemplate = "navigation/submenu.plug.html";
     parent::output($data, $stream);
 }
示例#5
0
文件: Admin.php 项目: ssrsfs/blg
 public function allow()
 {
     if (!Typeframe::User()->loggedIn()) {
         return false;
     }
     if (Typeframe::User()->get('usergroupid') == TYPEF_ADMIN_USERGROUPID) {
         return true;
     }
     $relativeUri = substr($this->page()->uri(), strlen(TYPEF_WEB_DIR));
     if ($relativeUri == '/admin' || $relativeUri == '/admin/') {
         // Main admin page.  Just check to see if the user has access to any other applications.
         $rs = Typeframe::Database()->execute('SELECT * FROM #__usergroup_admin WHERE usergroupid = ' . Typeframe::User()->get('usergroupid'));
         return count($rs) > 0;
     }
     $rs = Typeframe::Database()->execute('SELECT * FROM #__usergroup_admin WHERE usergroupid = ' . Typeframe::User()->get('usergroupid') . ' AND application = \'' . $this->page()->application()->name() . '\'');
     return $rs->count() > 0;
 }
示例#6
0
文件: functions.php 项目: ssrsfs/blg
function makeFriendlyUrlText($string, $query = null)
{
    // DO NOT pass an entire URL into this function.  It'll just get mangled.
    // Pass text that needs to be made friendly for insertion into a path, such as the
    // title of an article.
    $result = strtolower($string);
    $result = str_replace("'", '', $result);
    $result = preg_replace('/[^a-z0-9]+/', '-', $result);
    $result = preg_replace('/[\\-]+/', '-', $result);
    // Maximum length for each unit (assumed here to be used as a single directory name)
    // is 60 characters, plus a numeric ID in the case of duplicated titles
    if (strlen($result) > 60) {
        $result = substr($result, 0, 100);
        if (substr($result, 59) == '-') {
            $result = substr($result, 0, 99);
        }
    }
    if ($result[0] == '-') {
        $result = substr($result, 1);
    }
    if (substr($result, strlen($result) - 1) == '-') {
        $result = substr($result, 0, strlen($result) - 1);
    }
    if (!is_null($query)) {
        // Make sure the text does not already exist in the specified query
        // The query should include a parameter for the text (e.g.: SELECT * FROM table WHERE url = ?)
        $rs = Typeframe::Database()->prepare($query);
        $checked = $result;
        $num = 0;
        $rs->execute($checked);
        while ($rs->recordcount() > 0) {
            $num++;
            $checked = $result . '-' . $num;
            $rs->execute($checked);
        }
        $result = $checked;
    }
    return $result;
}
示例#7
0
文件: Typeframe.php 项目: ssrsfs/blg
 /**
  * Include (evaluate) a file in the source/scripts directory.
  * @param string $script The relative path to the file.
  */
 public static function IncludeScript($script)
 {
     // TODO: Get rid of these variables.  They should be declared explicitly in the controller if necessary.
     $pm = Typeframe::Pagemill();
     $db = Typeframe::Database();
     include_once TYPEF_SOURCE_DIR . '/scripts' . $script;
 }
示例#8
0
文件: index.php 项目: ssrsfs/blg
<?php

$db = Typeframe::Database();
$pm = Typeframe::Pagemill();
Typeframe::SetPageTemplate('/admin/applications/index.html');
foreach (Typeframe::Registry()->applications() as $a) {
    $app = array('name' => $a->name(), 'title' => $a->title(), 'map' => $a->map());
    $pm->addLoop('applications', $app);
    if ($a->map() == 'hard') {
        $pm->addLoop('applications', 'pages', array('uri' => TYPEF_WEB_DIR . $a->base()));
    } else {
        // TODO: Figure out what to do about soft-mapped pages
        /*
        foreach (Typeframe::Registry()->getApplicationPagesByName($a->name()) as $p) {
        	$pm->addLoop('applications', 'pages', array('uri' => $p->uri()));
        }
        */
    }
}
$pm->sortLoop('applications', 'name');
示例#9
0
文件: Response.php 项目: ssrsfs/blg
 private static function _Include($file, Pagemill $pm)
 {
     $db = Typeframe::Database();
     include $file;
 }
示例#10
0
文件: Page.dep.php 项目: ssrsfs/blg
 private static function _IncludeController($filename)
 {
     // TODO: Get rid of these variables.  They should be declared explicitly in the controller if necessary.
     $pm = Typeframe::Pagemill();
     $db = Typeframe::Database();
     include $filename;
 }
示例#11
0
     if ($column['Extra'] == 'auto_increment') {
         $autoIncrement = true;
     }
     $xlate = array();
     $xlate['name'] = $column['Field'];
     /*if (substr($column['Type'], 0, 3) == 'int') {
     			// integer
     		} else if (substr($column['Type'], 0, 7) == 'varchar') {
     			// varchar
     		}*/
     $xlate['type'] = addslashes($column['Type']);
     $xlate['allownull'] = $column['Null'] == 'NO' ? false : true;
     $xlate['defaultvalue'] = $column['Default'];
     $columns[] = $xlate;
 }
 $rsIndexes = Typeframe::Database()->execute('SHOW INDEX IN ' . $tableName);
 $indexes = array();
 foreach ($rsIndexes as $index) {
     $name = strtolower($index['Key_name']);
     if (!isset($indexes[$name])) {
         $indexes[$name] = array();
         $indexes[$name]['name'] = $name;
         $indexes[$name]['unique'] = $index['Non_unique'] == 0 ? true : false;
         $indexes[$name]['columns'] = array();
     }
     $indexes[$name]['columns'][] = array('name' => $index['Column_name']);
 }
 $classMill = new Pagemill();
 $classMill->setVariable('class', $className);
 $classMill->setVariable('table', $shortName);
 $classMill->setVariable('prefix', $prefix);
示例#12
0
文件: Menu.php 项目: ssrsfs/blg
 public function update(array $input = null)
 {
     //gimme life!
     //$item = isset($_POST['itemid']) ? new Navigation_Item($_POST['itemid']) : new Navigation_Item();
     $item = isset($_POST['itemid']) && !is_array($_POST['itemid']) ? Model_Nav::Get($_POST['itemid']) : Model_Nav::Create();
     if ($_REQUEST['cmd'] != 'delete' && $_REQUEST['cmd'] != 'name' && $_REQUEST['cmd'] != 'sort') {
         $item->set('pageid', 0);
         switch ($_POST['type']) {
             case 'none':
                 // Heh, these have no extra attributes, so null just about everything.
                 $item->set('label', $_POST['label']);
                 $item->set('url', '');
                 $item->set('onclick', '');
                 $item->set('visibility', 'always');
                 $item->set('method', '');
                 $item->set('target', '');
                 break;
             case 'int':
                 $item->set('label', $_POST['label']);
                 $item->set('pageid', $_POST['pageid']);
                 $item->set('url', '');
                 $item->set('onclick', '');
                 $item->set('visibility', 'permitted');
                 $item->set('method', $_POST['method']);
                 $item->set('target', $_POST['target']);
                 break;
             case 'arbint':
                 $item->set('label', $_POST['label']);
                 $item->set('url', $_POST['url']);
                 $item->set('onclick', '');
                 $item->set('visibility', $_POST['visibility']);
                 $item->set('method', $_POST['method']);
                 $item->set('target', $_POST['target']);
                 break;
             case 'ext':
                 $item->set('label', $_POST['label']);
                 $item->set('url', $_POST['url']);
                 $item->set('onclick', '');
                 $item->set('visibility', $_POST['visibility']);
                 $item->set('method', $_POST['method']);
                 $item->set('target', $_POST['target']);
                 break;
             case 'mailto':
                 $item->set('label', $_POST['label']);
                 $item->set('url', 'mailto:' . $_POST['url']);
                 $item->set('onclick', '');
                 $item->set('visibility', $_POST['visibility']);
                 $item->set('method', '');
                 $item->set('target', '');
                 break;
         }
     }
     switch ($_REQUEST['cmd']) {
         case 'add':
             $item->set('parent', $_POST['parent']);
             $item->set('plugid', $_POST['plugid']);
             $result = Typeframe::Database()->execute('SELECT MAX(sortnum) AS maxsort FROM #__nav WHERE plugid = ' . (int) $_POST['plugid']);
             $max = $result[0];
             $item->set('sortnum', $max['maxsort'] + 1);
             $item->save();
             $msg = " Added";
             break;
         case 'edit':
             $item->save();
             $msg = " Saved";
             break;
         case 'delete':
             $item->delete();
             $msg = " Deleted";
             break;
         case 'name':
             $plug = Model_Plug::Get($_POST['plugid']);
             $plug['name'] = $_POST['name'];
             $plug->save();
             Typeframe::Redirect('Name updated.', Typeframe::CurrentPage()->applicationUri() . '/edit?plugid=' . $_POST['plugid'] . '&parentid=' . (isset($_POST['parentid']) ? $_POST['parentid'] : '0'));
             return;
         case 'sort':
             $sortnum = 1;
             for ($i = 0; $i < count($_POST['itemid']); $i++) {
                 $item = Model_Nav::Get($_POST['itemid'][$i]);
                 $item['parent'] = $_POST['parent'][$i];
                 $item['sortnum'] = $sortnum;
                 $item->save();
                 $sortnum++;
             }
             Typeframe::Redirect('Items sorted.', Typeframe::CurrentPage()->applicationUri() . '/edit?plugid=' . $_POST['plugid'] . '&parentid=' . (isset($_POST['parentid']) ? $_POST['parentid'] : '0'));
             return;
     }
     Typeframe::Redirect('Item' . $msg, Typeframe::CurrentPage()->applicationUri() . '/edit?plugid=' . $_POST['plugid'] . '&parentid=' . (isset($_POST['parentid']) ? $_POST['parentid'] : '0'));
 }
示例#13
0
文件: dbdiff.inc.php 项目: ssrsfs/blg
        $pathinfo = pathinfo($file);
        if ($pathinfo['extension'] == 'php') {
            $models[] = 'BaseModel_' . $pathinfo['filename'];
        }
    }
}
$tables = array();
$result = Typeframe::Database()->execute('SHOW TABLES');
foreach ($result as $row) {
    $row = $row->getArray();
    //var_dump($row);
    $tableName = array_pop($row);
    $columns = array();
    //$rsCol = Typeframe::Database()->prepare('SHOW COLUMNS IN `' . $tableName . '`');
    //$rsCol->execute();
    $cols = Typeframe::Database()->execute('SHOW COLUMNS IN `' . $tableName . '`');
    //while ($col = $rsCol->fetch_array()) {
    foreach ($cols as $col) {
        $columns[] = $col['Field'];
    }
    $tables[$tableName] = $columns;
}
foreach (array_keys($tables) as $table) {
    $cls = className($table);
    if (!in_array($cls, $models)) {
        echo "The {$table} table does not have a BaseModel class.\n";
        $diffs++;
    } else {
        $mod = new $cls();
        foreach ($tables[$table] as $fld) {
            if (!$mod->field($fld)) {
示例#14
0
 /**
  * Saves the userID in the session database for logging in (or out) the user.
  *
  * @param int $uid
  */
 public static function SetUID($uid)
 {
     Typeframe::Database()->prepare("UPDATE `#__sessions`\r\n      SET `uid` = ?\r\n      WHERE `sid` = ? AND `ip_addr` = ?\r\n      LIMIT 1 ;")->execute($uid, Session::$sid, REMOTE_IP);
 }