예제 #1
0
 public function get($class)
 {
     $full_class_name = 'PerchAPI_' . $class;
     switch ($class) {
         case 'DB':
             return PerchDB::fetch();
             break;
         case 'Lang':
             if ($this->Lang === false) {
                 $this->Lang = new $full_class_name($this->version, $this->app_id);
             }
             return $this->Lang;
             break;
         case 'Settings':
             return PerchSettings::fetch();
             break;
         default:
             if ($this->Lang === false) {
                 $this->Lang = new PerchAPI_Lang($this->version, $this->app_id);
             }
             return new $full_class_name($this->version, $this->app_id, $this->Lang);
             break;
     }
     return false;
 }
 public function render_inputs($details = array())
 {
     $id = $this->Tag->input_id();
     $val = '';
     if (isset($details[$id]) && $details[$id] != '') {
         $json = $details[$id];
         $val = $json['tag'];
     }
     $DB = PerchDB::fetch();
     $sql = 'SELECT * FROM ' . PERCH_DB_PREFIX . 'members_tags ORDER BY tagDisplay';
     $memberTags = $DB->get_rows($sql);
     $opts = array();
     $opts[] = array('label' => '', 'value' => '');
     if (PerchUtil::count($memberTags)) {
         foreach ($memberTags as $memberTag) {
             $opts[] = array('label' => $memberTag['tagDisplay'], 'value' => $memberTag['tag']);
         }
     }
     if (PerchUtil::count($opts)) {
         $s = $this->Form->select($id, $opts, $val);
     } else {
         $s = '-';
     }
     return $s;
 }
 function __construct($api = false)
 {
     if ($api) {
         $this->api = $api;
     }
     $this->db = PerchDB::fetch();
     if (defined('PERCH_DB_PREFIX')) {
         $this->table = PERCH_DB_PREFIX . $this->table;
     }
     if (!$this->dynamic_fields_column) {
         $this->dynamic_fields_column = str_replace('ID', 'DynamicFields', $this->pk);
     }
 }
 public static function get_backup_search_sql($key)
 {
     $db = PerchDB::fetch();
     $opts = func_get_arg(1);
     // backup query using REGEXP
     $sql = ' \'' . __CLASS__ . '\' AS source, 0-(LENGTH(r.regionPage)-LENGTH(REPLACE(r.regionPage, \'/\', \'\'))) AS score, 
             r.regionPage AS col1, ci.itemSearch AS col2, ci.itemJSON AS col3, r.regionOptions AS col4, p.pageNavText AS col5, p.pageTitle AS col6, regionTemplate AS col7, r.regionKey AS col8
             FROM ' . PERCH_DB_PREFIX . 'content_regions r, ' . PERCH_DB_PREFIX . 'content_items ci, ' . PERCH_DB_PREFIX . 'pages p
             WHERE r.regionID=ci.regionID AND r.regionRev=ci.itemRev AND r.pageID=p.pageID AND r.regionPage!=\'*\' AND r.regionSearchable=1 
                 AND ci.itemSearch REGEXP ' . $db->pdb('[[:<:]]' . $key . '[[:>:]]') . ' 
                 AND r.regionPage LIKE ' . $db->pdb($opts['from-path'] . '%') . ' ';
     return $sql;
 }
예제 #5
0
 public static function fetch()
 {
     if (!isset(self::$instance)) {
         if (defined('PDO::MYSQL_ATTR_LOCAL_INFILE')) {
             $c = 'PerchDB_MySQL';
             PerchDB::$driver = 'PDO';
         } else {
             $c = 'PerchDB_MySQLi';
             PerchDB::$driver = 'MySQLi';
         }
         self::$instance = new $c();
     }
     return self::$instance;
 }
예제 #6
0
    <h1>Installing...</h1>

<?php 
if (defined('PERCH_DB_PREFIX')) {
    echo '<ul class="importables">';
    if (isset($_GET['auto'])) {
        echo '<li class="success icon">Your config file was written automatically.</li>';
    }
    $db = PerchDB::fetch();
    $Perch = Perch::fetch();
    $sql = file_get_contents('database.sql');
    $sql = str_replace('__PREFIX__', PERCH_DB_PREFIX, $sql);
    $sql = str_replace('__PERCH_LOGINPATH__', PERCH_LOGINPATH, $sql);
    $sql = str_replace('__PERCH_VERSION__', $Perch->version, $sql);
    $queries = explode(';', $sql);
    $msgs = array();
    if (PerchUtil::count($queries) > 0) {
        foreach ($queries as $query) {
            $query = trim($query);
            if ($query != '') {
                if (!$db->execute($query)) {
                    if ($db->error_msg != '') {
                        $msgs[] = $db->error_msg;
                        $db->error_msg = false;
                    }
                }
            }
        }
        // test that it worked
        $tables = $db->get_rows('SHOW TABLES');
        $db_fail = true;
예제 #7
0
<?php

// Prevent running directly:
if (!defined('PERCH_DB_PREFIX')) {
    exit;
}
$sql = "\n\n\t\tALTER TABLE `__PREFIX__members` CHANGE `memberPassword` `memberPassword` CHAR(255)  NULL  DEFAULT NULL;\n\n\t";
$sql = str_replace('__PREFIX__', PERCH_DB_PREFIX, $sql);
$DB = PerchDB::fetch();
$statements = explode(';', $sql);
foreach ($statements as $statement) {
    $statement = trim($statement);
    if ($statement != '') {
        $DB->execute($statement);
    }
}
$Settings->set('perch_members_update', '1.4');
예제 #8
0
 /**
  * Reorder keys into source order
  *
  * @return void
  * @author Drew McLellan
  */
 private function _reorder_keys()
 {
     if (PerchUtil::count($this->key_requests)) {
         $Perch = Perch::fetch();
         $page = $Perch->get_page();
         $db = PerchDB::fetch();
         $i = 0;
         foreach ($this->key_requests as $key) {
             if (!in_array($key, $this->keys_reordered)) {
                 $sql = 'UPDATE ' . $this->table . ' SET regionOrder=' . $i . ' WHERE regionPage=' . $db->pdb($page) . ' AND regionKey=' . $db->pdb($key) . ' LIMIT 1';
                 $db->execute($sql);
                 $this->keys_reordered[] = $key;
             }
             $i++;
         }
     }
 }
			<?php 
echo '<li>DB driver: ' . PerchDB::$driver . '</li>';
$sql = 'SHOW TABLES';
$rows = $DB->get_rows($sql);
if (PerchUtil::count($rows)) {
    $tables = array();
    foreach ($rows as $row) {
        foreach ($row as $key => $val) {
            $tables[] = PerchUtil::html($val);
        }
    }
    echo '<li>DB tables: ' . implode(', ', $tables) . '</li>';
}
?>
			<li>Users: <?php 
echo PerchDB::fetch()->get_value('SELECT COUNT(*) FROM ' . PERCH_DB_PREFIX . 'users');
?>
</li>        
            <li>App runtimes: <pre><?php 
$file = PerchUtil::file_path(PERCH_PATH . '/config/apps.php');
echo PerchUtil::html(file_get_contents($file));
?>
</pre></li>
            <?php 
$ScheduledTasks = new PerchScheduledTasks();
$apps = $ScheduledTasks->get_scheduled();
if (PerchUtil::count($apps)) {
    foreach ($apps as $appID => $tasks) {
        $task_list = array();
        echo '<li>Scheduled tasks for ' . $appID . ': ';
        foreach ($tasks as $task) {
예제 #10
0
 public function __construct($details)
 {
     $this->db = PerchDB::fetch();
     $this->details = $details;
     $this->table = PERCH_DB_PREFIX . $this->table;
 }
예제 #11
0
    public function test_mysql()
    {
        $db = PerchDB::fetch();
        $res = $db->get_table_meta($this->table);
        if ($res === false) {
            $sql = 'CREATE TABLE `' . $this->table . '` (
			 `ID` int(10) NOT NULL auto_increment,
			 `Alias` varchar(255) character set utf8 NOT NULL,
			 `Location` varchar(255) character set utf8 NOT NULL,
			 `Template` varchar(255) character set utf8 NOT NULL,
			 PRIMARY KEY  (`ID`)
			) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1';
            $db->execute($sql);
        }
    }