示例#1
0
 /**
  * class FSearch
  *
  * Search and retrieves Page objects.
  *
  * @author Andrew Crookston <*****@*****.**>
  * @since Frog version 0.9.5
  * @return Array of Page objects or empty Array
  */
 public static function search($args = null)
 {
     // Collect attributes...
     $where = isset($args['where']) ? trim($args['where']) : '';
     $search = isset($args['search']) ? trim($args['search']) : '';
     $order_by = isset($args['order']) ? trim($args['order']) : '';
     $offset = isset($args['offset']) ? (int) $args['offset'] : 0;
     $limit = isset($args['limit']) ? (int) $args['limit'] : 0;
     // Prepare query parts
     $order_by_string = empty($order_by) ? '' : "ORDER BY {$order_by}";
     $limit_string = $limit > 0 ? "LIMIT {$offset}, {$limit}" : '';
     // Prepare the WHERE string (It's WHERE all the magic happens) ;)
     $where_string = empty($where) ? 'WHERE ' : "WHERE {$where} AND ";
     // Allow custom queries
     $where_string .= "(page.is_fsearchable = 1 AND page_part.name = 'body' AND page.needs_login = 2 " . ' AND MATCH (page_part.content_fsearchable) AGAINST (\'' . (string) $search . '\'))';
     // full text
     $tablename = self::tableNameFromClassName('FSearch');
     $tablename_user = self::tableNameFromClassName('User');
     $tablename_part = self::tableNameFromClassName('PagePart');
     // Prepare SQL
     $sql = "SELECT page.*, creator.name AS created_by_name, updator.name AS updated_by_name FROM {$tablename} AS page" . " LEFT JOIN {$tablename_user} AS creator ON page.created_by_id = creator.id" . " LEFT JOIN {$tablename_user} AS updator ON page.updated_by_id = updator.id" . " LEFT JOIN {$tablename_part} AS page_part ON page.id = page_part.page_id" . " {$where_string} {$order_by_string} {$limit_string}";
     $stmt = self::$__CONN__->prepare($sql);
     $stmt->execute();
     $objects = array();
     while ($obj = $stmt->fetchObject()) {
         $parent = self::findParentById($obj->parent_id);
         $obj->part = get_parts($obj->id);
         $objects[] = new Page($obj, $parent);
     }
     return $objects;
 }
示例#2
0
function get_parts($struct, $result = array(), $section = null)
{
    if (empty($struct->parts)) {
        $result[$section] = $struct;
    } else {
        foreach ($struct->parts as $id => $part) {
            $parent_section = $section !== null ? sprintf('%s.%s', $section, $id + 1) : $id + 1;
            $result = get_parts($part, $result, $parent_section);
        }
    }
    return $result;
}
示例#3
0
文件: main.php 项目: chaobj001/tt
function find_page_by_slug($slug, &$parent)
{
    global $__FROG_CONN__;
    $page_class = 'Page';
    $parent_id = $parent ? $parent->id : 0;
    $sql = 'SELECT page.*, author.name AS author, updator.name AS updator ' . 'FROM ' . TABLE_PREFIX . 'page AS page ' . 'LEFT JOIN ' . TABLE_PREFIX . 'user AS author ON author.id = page.created_by_id ' . 'LEFT JOIN ' . TABLE_PREFIX . 'user AS updator ON updator.id = page.updated_by_id ' . 'WHERE slug = ? AND parent_id = ? AND (status_id=' . Page::STATUS_REVIEWED . ' OR status_id=' . Page::STATUS_PUBLISHED . ' OR status_id=' . Page::STATUS_HIDDEN . ')';
    $stmt = $__FROG_CONN__->prepare($sql);
    $stmt->execute(array($slug, $parent_id));
    if ($page = $stmt->fetchObject()) {
        // hook to be able to redefine the page class with behavior
        if (!empty($parent->behavior_id)) {
            // will return Page by default (if not found!)
            $page_class = Behavior::loadPageHack($parent->behavior_id);
        }
        // create the object page
        $page = new $page_class($page, $parent);
        // assign all is parts
        $page->part = get_parts($page->id);
        return $page;
    } else {
        return false;
    }
}
示例#4
0
文件: Page.php 项目: chaobj001/tt
 public function children($args = null, $value = array(), $include_hidden = false)
 {
     global $__FROG_CONN__;
     $page_class = 'Page';
     // Collect attributes...
     $where = isset($args['where']) ? $args['where'] : '';
     $order = isset($args['order']) ? $args['order'] : 'page.position, page.id';
     $offset = isset($args['offset']) ? $args['offset'] : 0;
     $limit = isset($args['limit']) ? $args['limit'] : 0;
     // auto offset generated with the page param
     if ($offset == 0 && isset($_GET['page'])) {
         $offset = ((int) $_GET['page'] - 1) * $limit;
     }
     // Prepare query parts
     $where_string = trim($where) == '' ? '' : "AND " . $where;
     $limit_string = $limit > 0 ? "LIMIT {$offset}, {$limit}" : '';
     // Prepare SQL
     $sql = 'SELECT page.*, author.name AS author, author.id AS author_id, updator.name AS updator, updator.id AS updator_id ' . 'FROM ' . TABLE_PREFIX . 'page AS page ' . 'LEFT JOIN ' . TABLE_PREFIX . 'user AS author ON author.id = page.created_by_id ' . 'LEFT JOIN ' . TABLE_PREFIX . 'user AS updator ON updator.id = page.updated_by_id ' . 'WHERE parent_id = ' . $this->id . ' AND (status_id=' . Page::STATUS_REVIEWED . ' OR status_id=' . Page::STATUS_PUBLISHED . ($include_hidden ? ' OR status_id=' . Page::STATUS_HIDDEN : '') . ') ' . "{$where_string} ORDER BY {$order} {$limit_string}";
     $pages = array();
     // hack to be able to redefine the page class with behavior
     if (!empty($this->behavior_id)) {
         // will return Page by default (if not found!)
         $page_class = Behavior::loadPageHack($this->behavior_id);
     }
     // Run!
     if ($stmt = $__FROG_CONN__->prepare($sql)) {
         $stmt->execute($value);
         while ($object = $stmt->fetchObject()) {
             $page = new $page_class($object, $this);
             // assignParts
             $page->part = get_parts($page->id);
             $pages[] = $page;
         }
     }
     if ($limit == 1) {
         return isset($pages[0]) ? $pages[0] : false;
     }
     return $pages;
 }
示例#5
0
					<input type="text" name="part_title" placeholder = "File Title" id="part_title">
					<br>
					<input type = "hidden" name = "max_file_size" value = "10485760">
					<input type="submit" name="submit" value="Submit" />
				</form>
			
			<?php 
$lesson_title_array = array();
$lesson_title_array = get_lessons();
if (empty($lesson_title_array)) {
    echo "No lesson yet !";
} else {
    foreach ($lesson_title_array as $lesson_title) {
        $i = 1;
        $part_title_array = array();
        $part_title_array = get_parts($lesson_title);
        ?>
				<table>
						<thead>
							<tr>
								<th class = "ico">
									<img src = "../design/images/logoicon.jpg" alt = "logoicon">
								</th>
								<th colspan="2">
									<?php 
        echo $lesson_title;
        ?>
								</th>
							</tr>
						</thead>