コード例 #1
0
ファイル: main.php プロジェクト: julpi/FreshCMS
function deprecated_find_page_by_slug($slug, &$parent, $all = false)
{
    global $__CMS_CONN__;
    $page_class = 'Page';
    $parent_id = $parent ? $parent->id : 0;
    $sql = 'SELECT page.*, author.name AS author, updater.name AS updater ' . '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 updater ON updater.id = page.updated_by_id ';
    if ($all) {
        $sql .= 'WHERE slug = ? AND parent_id = ? AND (status_id=' . Page::STATUS_PREVIEW . ' OR status_id=' . Page::STATUS_PUBLISHED . ' OR status_id=' . Page::STATUS_HIDDEN . ')';
    } else {
        $sql .= 'WHERE slug = ? AND parent_id = ? AND (status_id=' . Page::STATUS_PUBLISHED . ' OR status_id=' . Page::STATUS_HIDDEN . ')';
    }
    $stmt = $__CMS_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);
        return $page;
    } else {
        return false;
    }
}
コード例 #2
0
ファイル: Page.php プロジェクト: albertobraschi/toad
 public static function findBySlugAndParentId($slug, $parent_id = 0, $class = __CLASS__)
 {
     /* TODO: Behaviour pagehack seems kludgish. */
     $parent = Page::findById($parent_id);
     if ($parent && $parent->behaviorId()) {
         $class = Behavior::loadPageHack($parent->behaviorId());
     }
     $params['where'] = sprintf("slug=%s AND parent_id=%d", self::connection()->quote($slug), $parent_id);
     $sql = Record::buildSql($params, $class);
     // print_r(self::connection()->query($sql, PDO::FETCH_CLASS, $class)->fetch());
     return self::connection()->query($sql, PDO::FETCH_CLASS, $class)->fetch();
 }
コード例 #3
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;
 }
コード例 #4
0
 private static function findBySql($sql, $values = null)
 {
     $class_name = get_called_class();
     Record::logQuery($sql);
     // Prepare and execute
     $stmt = Record::getConnection()->prepare($sql);
     if (!$stmt->execute($values)) {
         return false;
     }
     $page_class = 'Page';
     $objects = array();
     while ($page = $stmt->fetchObject('Page')) {
         $parent = $page->parent();
         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);
         $page->part = self::get_parts($page->id);
         $objects[] = $page;
     }
     return $objects;
 }
コード例 #5
0
ファイル: Page.php プロジェクト: ReekenX/wolfcms
 /**
  * Finds a Page record based on supplied arguments.
  * 
  * Usage:
  *      $page = Page::find('/the/uri/to/your/page');
  *      $page = Page::find(array('where' => 'created_by_id=12'));
  * 
  * Argument array can contain:
  *      - where
  *      - order
  *      - offset
  *      - limit
  * 
  * Return values can be:
  *      - A single Page object
  *      - An array of Page objects which can be empty
  *      - False
  *
  * @param mixed $args   Uri string or array of arguments.
  * @return mixed        Page or array of Pages, otherwise false.
  */
 public static function find($args = null)
 {
     if (!is_array($args)) {
         // Assumes find was called with a uri
         return Page::findByUri($args);
     }
     $page_class = 'Page';
     // Collect attributes...
     $where = isset($args['where']) ? trim($args['where']) : '';
     $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
     $where_string = empty($where) ? '' : "WHERE {$where}";
     $order_by_string = empty($order_by) ? '' : "ORDER BY {$order_by}";
     $limit_string = $limit > 0 ? "LIMIT {$limit}" : '';
     $offset_string = $offset > 0 ? "OFFSET {$offset}" : '';
     $tablename = self::tableNameFromClassName('Page');
     $tablename_user = self::tableNameFromClassName('User');
     // Prepare SQL
     $sql = "SELECT page.*, creator.name AS created_by_name, updater.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 updater ON page.updated_by_id = updater.id" . " {$where_string} {$order_by_string} {$limit_string} {$offset_string}";
     $stmt = self::$__CONN__->prepare($sql);
     if (!$stmt->execute()) {
         return false;
     }
     // Run!
     $objects = array();
     while ($page = $stmt->fetchObject('Page')) {
         $parent = $page->parent();
         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);
         $page->part = self::get_parts($page->id);
         $objects[] = $page;
     }
     // if we're loading just one result return it
     if ($limit == 1) {
         if (isset($objects['0']) && is_object($objects['0'])) {
             return $objects['0'];
         }
     } else {
         // or return them all
         return $objects;
     }
     return false;
 }