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

source: OpenPNE3/plugins/opOpenSocialPlugin/trunk/lib/model/ApplicationPeer.php @ 9417

Last change on this file since 9417 was 9417, checked in by ShogoKawahara, 12 years ago

#3119:added application/setting action

File size: 3.5 KB
Line 
1<?php
2
3/**
4 * Subclass for performing query and update operations on the 'application' table.
5 *
6 *
7 *
8 * @package plugins.opOpenSocialPlugin.lib.model
9 */ 
10class ApplicationPeer extends BaseApplicationPeer
11{
12  /**
13   * cast object from array
14   *
15   * @param array $array
16   * @return object
17   */
18  protected static function arrayToObject($array)
19  {
20    foreach ($array as &$a)
21    {
22      if(is_array($a))
23      {
24        $a = self::arrayToObject($a);
25      }
26    }
27    return (object)$array;
28  }
29  /**
30   * add or update application
31   *
32   * @param string $url     gadget url
33   * @param string $culture culture
34   * @param bool   $update
35   * @return Application application object 
36   */
37  public static function addApplication($url, $culture = 'en_US', $update = false)
38  {
39    $criteria = new Criteria(self::DATABASE_NAME);
40    $criteria->add(self::URL, $url);
41    $app = self::doSelectOne($criteria);
42    if (!empty($app) && !$update)
43    {
44      $ca = $app->getUpdatedAt();
45      if (!empty($ca))
46        {
47          return $app;
48        }
49    }
50    $cul = split('_',$culture);
51    $req = self::arrayToObject(array(
52      'context' => array(
53        'country' => isset($cul[1]) ? $cul[1] : 'US',
54        'language' => $cul[0],
55        'view' => 'default',
56        'container' => 'openpne3'
57      ),
58      'gadgets' => array(array('url' => $url,'moduleId' => 1))
59    ));
60    $handler = new MetadataHandler();
61    $response = $handler->process($req);
62    if (!is_array($response) || count($response) <= 0)
63    {
64      throw new Exception('No data');
65    }
66    if (isset($response[0]['errors']))
67    {
68      throw new Exception($response[0]['errors'][0]);
69    }
70    $default_gadget = array(
71      'url'             => '',
72      'title'           => '',
73      'directory_title' => '',
74      'screenshot'      => '',
75      'thumbnail'       => '',
76      'author'          => '',
77      'author_email'    => '',
78      'description'     => ''
79    );
80    $gadget = $response[0];
81    if (isset($gadget['authorEmail']))
82    {
83      $gadget['author_email'] = $gadget['authorEmail'];
84    }
85    if (isset($gadget['directoryTitle']))
86    {
87      $gadget['directory_title'] = $gadget['directoryTitle'];
88    }
89    $gadget = array_merge($default_gadget,$gadget);
90    if (empty($app))
91    {
92      $app = new Application();
93    }
94    $app->setUrl($gadget['url']);
95    $app->setTitle($gadget['title']);
96    $app->setDirectoryTitle($gadget['directory_title']);
97    $app->setScreenshot($gadget['screenshot']);
98    $app->setThumbnail($gadget['thumbnail']);
99    $app->setAuthor($gadget['author']);
100    $app->setAuthorEmail($gadget['authorEmail']);
101    $app->setDescription($gadget['description']);
102    $app->setSettings(isset($gadget['userPrefs']) ? serialize($gadget['userPrefs']) : '');
103    $app->setViews(isset($gadget['views']) ? serialize($gadget['views']) : '');
104    if ($gadget['scrolling'] == 'true')
105    {
106      $gadget['scrolling'] = 1;
107    }
108    $app->setScrolling(! empty($gadget['scrolling']) ? $gadget['scrolling'] : '0');
109    $app->setHeight(! empty($gadget['height']) ? $gadget['height'] : '0');
110    $iframe_url = $gadget['iframeUrl'];
111    $iframe_params = array();
112    parse_str($iframe_url, $iframe_params);
113    $app->setVersion(isset($iframe_params['v']) ? $iframe_params['v'] : '');
114    $app->save();
115    return $app;
116  }
117
118  /**
119   * has settings
120   *
121   * @param integer $modId
122   * @return boolean
123   */
124  public static function hasSetting($modId)
125  {
126    $app = self::retrieveByPk($modId);
127    if (!$app)
128    {
129      return false;
130    }
131    return $app->hasSettings();
132  }
133}
Note: See TracBrowser for help on using the repository browser.