ここの情報は古いです。ご理解頂いた上でお取り扱いください。

Changeset 6732


Ignore:
Timestamp:
Apr 26, 2008, 4:55:00 AM (12 years ago)
Author:
ebihara
Message:

#2027:キャスター情報追加時・更新時に小窓のURLなどの情報を読み込むようにした

Location:
OpenPNE/trunk/webapp
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • OpenPNE/trunk/webapp/lib/OpenPNE/RSS.php

    r5877 r6732  
    2121    }
    2222
    23     function fetch($rss_url, $is_get_feed_title = false)
     23    function create_simplepie_object($rss_url)
    2424    {
    25         $feed = new SimplePie();
     25        $feed =& new SimplePie();
    2626        if (OPENPNE_USE_HTTP_PROXY) {
    2727            $proxy = OPENPNE_HTTP_PROXY_HOST . ":" . OPENPNE_HTTP_PROXY_PORT;
     
    3131        $feed->set_feed_url($rss_url);
    3232        $feed->set_cache_location(OPENPNE_RSS_CACHE_DIR);
     33        if (!(@$feed->init())) {
     34            return false;
     35        }
    3336
    34         if (!(@$feed->init())) {
     37        return $feed;
     38    }
     39
     40    function get_feed_title($rss_url)
     41    {
     42        if (!$feed =& $this->create_simplepie_object($rss_url)) {
     43            return false;
     44        }
     45
     46        return @$feed->get_title();
     47    }
     48
     49    function get_feed_description($rss_url)
     50    {
     51        if (!$feed =& $this->create_simplepie_object($rss_url)) {
     52            return false;
     53        }
     54
     55        return @$feed->get_description();
     56    }
     57
     58    function fetch($rss_url, $is_get_feed_title = false)
     59    {
     60        if (!$feed =& $this->create_simplepie_object($rss_url)) {
    3561            return false;
    3662        }
  • OpenPNE/trunk/webapp/modules/admin/lib/db_admin.php

    r6706 r6732  
    31213121function db_admin_insert_c_cmd_caster($url)
    31223122{
    3123     $data = array(
     3123    require_once 'OpenPNE/RSS.php';
     3124    $rss = new OpenPNE_RSS();
     3125    $title = $rss->get_feed_title($url);
     3126    $description = $rss->get_feed_description($url);
     3127
     3128    if (!$title && !$description) {
     3129        return false;
     3130    }
     3131
     3132    if (!$title) {
     3133        $title = '';
     3134    }
     3135
     3136    if (!$description) {
     3137        $title = '';
     3138    }
     3139
     3140    $data = array(
     3141        'title' => $title,
     3142        'description' => $description,
    31243143        'url' => $url,
    31253144    );
    3126     return db_insert('c_cmd_caster', $data);
     3145    $c_cmd_caster_id = db_insert('c_cmd_caster', $data);
     3146
     3147    db_admin_update_c_cmd4c_cmd_caster_id($c_cmd_caster_id);
     3148
     3149    return $c_cmd_caster_id;
    31273150}
    31283151
     
    31303153{
    31313154    $sql = 'DELETE FROM c_cmd_caster WHERE c_cmd_caster_id = ?';
    3132     return db_query($sql, array($c_cmd_caster_id));
     3155    db_query($sql, array($c_cmd_caster_id));
     3156
     3157    $sql = 'DELETE FROM c_cmd WHERE c_cmd_caster_id = ?';
     3158    db_query($sql, array($c_cmd_caster_id));
    31333159}
    31343160
    31353161function db_admin_update_c_cmd_caster($c_cmd_caster_id, $url)
    31363162{
    3137     $data = array(
     3163    require_once 'OpenPNE/RSS.php';
     3164    $rss = new OpenPNE_RSS();
     3165    $title = $rss->get_feed_title($url);
     3166    $description = $rss->get_feed_description($url);
     3167
     3168    if (!$title && !$description) {
     3169        return false;
     3170    }
     3171
     3172    if (!$title) {
     3173        $title = '';
     3174    }
     3175
     3176    if (!$description) {
     3177        $title = '';
     3178    }
     3179
     3180    $data = array(
     3181        'title' => $title,
     3182        'description' => $description,
    31383183        'url' => $url,
    31393184    );
    3140     $where = array(
    3141         'c_cmd_caster_id' => $c_cmd_caster_id,
    3142     );
    3143     return db_update('c_cmd_caster', $data, $where);
     3185    $where = array('c_cmd_caster_id' => $c_cmd_caster_id);
     3186    $result = db_update('c_cmd_caster', $data, $where);
     3187
     3188    db_admin_update_c_cmd4c_cmd_caster_id($c_cmd_caster_id);
     3189    return $result;
     3190}
     3191
     3192function db_admin_update_c_cmd4c_cmd_caster_id($c_cmd_caster_id)
     3193{
     3194    $sql = 'SELECT url FROM c_cmd_caster WHERE c_cmd_caster_id = ?';
     3195    $url = db_get_one($sql, array($c_cmd_caster_id));
     3196
     3197    require_once 'OpenPNE/RSS.php';
     3198    $rss = new OpenPNE_RSS();
     3199    $items = $rss->fetch($url);
     3200
     3201    $allowed_type = array('text/javascript', 'application/javascript');
     3202    foreach ($items as $item)
     3203    {
     3204        $enclosure = $item['enclosure'];
     3205        if (!in_array($enclosure->type, $allowed_type)) {
     3206            continue;
     3207        }
     3208
     3209        $name = basename($enclosure->link, '.js');
     3210        if ($c_cmd_id = db_admin_get_c_cmd_id4name_c_cmd_caster_id($name, $c_cmd_caster_id)) {
     3211            if (!db_admin_is_updated_c_cmd($c_cmd_id, $item['date'])) {
     3212                continue;
     3213            }
     3214
     3215            $data = array('url' => $enclosure->link, 'u_datetime' => $item['date']);
     3216            $where = array('c_cmd_id' => $c_cmd_id);
     3217            db_update('c_cmd', $data, $where);
     3218        } else {
     3219            $data = array(
     3220                'name' => $name,
     3221                'url' => $enclosure->link,
     3222                'c_cmd_caster_id' => $c_cmd_caster_id,
     3223                'r_datetime' => $item['date'],
     3224                'u_datetime' => $item['date'],
     3225            );
     3226            db_insert('c_cmd', $data);
     3227        }
     3228    }
     3229}
     3230
     3231function db_admin_is_updated_c_cmd($c_cmd_id, $date)
     3232{
     3233    $sql = 'SELECT c_cmd_id FROM c_cmd WHERE c_cmd_id = ? AND u_datetime < ?';
     3234    $param = array($c_cmd_id, $date);
     3235    return (bool)db_get_one($sql, $param);
     3236}
     3237
     3238function db_admin_get_c_cmd_id4name_c_cmd_caster_id($name, $c_cmd_caster_id)
     3239{
     3240    $sql = 'SELECT c_cmd_id FROM c_cmd WHERE name = ? AND c_cmd_caster_id = ?';
     3241    $data = array($name, $c_cmd_caster_id);
     3242    return db_get_one($sql, $data);
    31443243}
    31453244
Note: See TracChangeset for help on using the changeset viewer.