Esempio n. 1
0
 /**
  * The R in CRUD
  * @param AppModel $model
  * @param array $queryData
  * @return array
  */
 public function read(&$model, $queryData = array())
 {
     // Compile the request
     $request = array('uri' => 'http://gdata.youtube.com/feeds/api/users/default/uploads');
     $response = parent::read($model, $request);
     return $response;
 }
Esempio n. 2
0
 /**
  * The R in CRUD
  *
  * @param object $model the AppModel
  * @param array $queryData a multi-dimensional array of query parameters
  * @return array
  */
 public function read(&$model, $queryData = array())
 {
     $uriStringParams = array('user' => 'default');
     $queryStringParams = array();
     if (!empty($queryData['conditions'])) {
         $conditions = $queryData['conditions'];
         foreach ($this->_uriKeys as $key) {
             if (!empty($conditions[$key])) {
                 $uriStringParams[$key] = $conditions[$key];
                 unset($conditions[$key]);
             }
         }
         if (!empty($conditions['tag'])) {
             if (is_array($conditions['tag'])) {
                 $conditions['tag'] = implode(',', $conditions['tag']);
             }
             if (empty($conditions['kind'])) {
                 $conditions['kind'] = 'photo';
             }
         }
         $queryStringParams = $conditions;
     }
     // Compile the request
     $request = array('uri' => $this->_build_picasa_uri($uriStringParams, $queryStringParams));
     $response = parent::read($model, $request);
     return $response;
 }
Esempio n. 3
0
 /**
  * The R in CRUD
  *
  * Returns the results for the metric corresponding to the model on which find
  * is called according to the queryData supplied.
  *
  * Valid queryData options include:
  *  - conditions
  *    - start_date
  *      Format: Y-m-d
  *      Required: True
  *    - end_date
  *      Format: Y-m-d
  *      Required: True
  *  - page
  *    Format: integer
  *    Required: False
  *    Default: 1
  *  - limit
  *    Format: integer
  *    Required: False
  *    Default: 50
  *
  * @param AppModel $model
  * @param array $queryData
  * @return array
  */
 public function read(&$model, $queryData = array())
 {
     // Validate
     if (!isset($queryData['conditions']['start_date'])) {
         trigger_error(__('start_date is a required condition', true), E_USER_WARNING);
         return false;
     }
     if (!preg_match('/^\\d{4}-\\d{2}-\\d{2}$/', $queryData['conditions']['start_date'])) {
         trigger_error(__('start_date must be in the format yyyy-mm-dd', true), E_USER_WARNING);
         return false;
     }
     if (!isset($queryData['conditions']['end_date'])) {
         trigger_error(__('end_date is a required condition', true), E_USER_WARNING);
         return false;
     }
     if (!preg_match('/^\\d{4}-\\d{2}-\\d{2}$/', $queryData['conditions']['end_date'])) {
         trigger_error(__('end_date must be in the format yyyy-mm-dd', true), E_USER_WARNING);
         return false;
     }
     if (isset($queryData['limit'])) {
         if (!preg_match('/^\\d+$/', $queryData['limit'])) {
             trigger_error(__('limit must be an integer', true), E_USER_WARNING);
             return false;
         }
         if ($queryData['limit'] < 1 || $queryData['limit'] > 10000) {
             trigger_error(__('limit must be between 1 and 10,000', true), E_USER_WARNING);
             return false;
         }
         $maxResults = $queryData['limit'];
     } else {
         $maxResults = 50;
     }
     if (isset($queryData['page'])) {
         if (!preg_match('/^\\d+$/', $queryData['page'])) {
             trigger_error(__('page must be an integer', true), E_USER_WARNING);
             return false;
         }
         if ($queryData['page'] < 1) {
             trigger_error(__('page must be greater than or equal to 1', true), E_USER_WARNING);
             return false;
         }
         $startIndex = 1 + ($queryData['page'] - 1) * $maxResults;
     } else {
         $startIndex = 1;
     }
     // An anonymous function for prefixing an arg with "ga:"
     $prefix = create_function('&$v', '$v = "ga:".$v;');
     // Prefixes all metrics with "ga:"
     $metrics = explode(',', $queryData['fields']);
     array_walk($metrics, $prefix);
     $metrics = implode(',', $metrics);
     // Prefixes all dimensions with "ga:"
     $dimensions = explode(',', $queryData['group']);
     array_walk($dimensions, $prefix);
     $dimensions = implode(',', $dimensions);
     // Initialising query string params array
     $queryStringParams = array('metrics' => $metrics, 'dimensions' => $dimensions, 'start-date' => $queryData['conditions']['start_date'], 'end-date' => $queryData['conditions']['end_date'], 'ids' => 'ga:' . $this->config['profileId'], 'start-index' => $startIndex, 'max-results' => $maxResults, 'prettyprint' => 'true');
     // Add order to query string params if set
     $queryData['order'] = array_filter($queryData['order']);
     if (!empty($queryData['order'])) {
         $sorts = explode(',', $queryData['order'][0]);
         foreach ($sorts as $sort) {
             list($sort, $direction) = preg_split('/\\s/', $sort);
             list($alias, $field) = explode('.', $sort);
             $sort = 'ga:' . $field;
             if (strtolower($direction) == 'desc') {
                 $sort = '-' . $sort;
             }
             $queryStringParams['sort'][] = $sort;
         }
         $queryStringParams['sort'] = implode(',', $queryStringParams['sort']);
     }
     // Compile the request
     $request = array('uri' => 'https://www.google.com/analytics/feeds/data?' . http_build_query($queryStringParams));
     $response = parent::read($model, $request);
     return $response;
 }