Alternc  3.2
Alternc logiel libre pour l'hébergement
 All Data Structures Namespaces Files Functions Variables Pages
m_piwik Class Reference

This class manage piwik statistics management through AlternC, using piwik's "API". More...

Public Member Functions

 hook_menu ()
 m_piwik ()
 Constructor.
 hook_admin_del_member ()
 hook called when an AlternC account is deleted
 hook_quota_get ()
 Returns the used quota for the $name service for the current user.
 url ()
 user_add ($user_login, $user_mail=null)
 user_edit ()
 get_site_access ($user_login)
 get_users_access_from_site ($site_id)
 get_user ($user_login)
 get_alternc_users ()
 user_delete ($piwik_user_login)
 users_list ()
 user_checkremote ($puser_id)
 user_remoteauth ()
 user_access ()
 site_list ()
 site_js_tag ($site_id)
 get_alternc_sites ()
 get_site_list ()
 site_add ($siteName, $urls, $ecommerce=FALSE)
 site_delete ($site_id)
 site_set_user_right ($site_id, $login, $right)
 site_alias_add ()
 clean_user_name ($username)
 dev ()
 call_page ($module, $method, $arguments=array(), $output= 'JSON')
 call_privileged_page ($module, $method, $arguments=array(), $output= 'JSON')

Data Fields

 $piwik_server_uri
 $piwik_admin_token
 $alternc_users
 $alternc_sites

Detailed Description

This class manage piwik statistics management through AlternC, using piwik's "API".

Definition at line 29 of file m_piwik.php.

Member Function Documentation

call_page (   $module,
  $method,
  $arguments = array(),
  $output = 'JSON' 
)

Definition at line 358 of file m_piwik.php.

References $err.

Referenced by call_privileged_page().

{
global $err;
$url = sprintf('%s/?module=%s&method=%s&format=%s', $this->piwik_server_uri, $module, $method, $output);
foreach ($arguments AS $k=>$v)
$url .= sprintf('&%s=%s', urlencode($k), $v); // urlencode($v));
$page_content = file_get_contents($url);
if ($page_content === FALSE) {
$err->raise("piwik", _("Unable to reach the API"));
return FALSE;
}
if ($output == 'JSON') {
$api_data = json_decode($page_content);
if ($api_data === FALSE) {
$err->raise("piwik", _("Error while decoding response from the API"));
return FALSE;
}
return $api_data;
} else {
$err->raise("piwik", _("Other format than JSON is not implemented yet"));
return FALSE;
}
}
call_privileged_page (   $module,
  $method,
  $arguments = array(),
  $output = 'JSON' 
)

Definition at line 384 of file m_piwik.php.

References $piwik_admin_token, and call_page().

Referenced by get_site_access(), get_site_list(), get_user(), get_users_access_from_site(), site_add(), site_delete(), site_js_tag(), site_list(), site_set_user_right(), user_add(), user_delete(), and users_list().

{
$arguments['token_auth'] = $this->piwik_admin_token;
return $this->call_page($module, $method, $arguments, $output);
}
clean_user_name (   $username)

Definition at line 347 of file m_piwik.php.

References $username.

Referenced by user_add().

{
return mysql_real_escape_string(trim($username));
}
dev ( )

Definition at line 352 of file m_piwik.php.

{
// $this->call_page('module', 'method', array('user' => 'fser', 'pass' => 'toto'));
// return $this->users_list();
}
get_alternc_sites ( )

Definition at line 274 of file m_piwik.php.

References $alternc_sites, $cuid, and $db.

Referenced by m_piwik().

{
global $db, $cuid;
static $alternc_sites = array();
$db->query("SELECT piwik_id AS site_id FROM piwik_sites WHERE uid='$cuid'");
while ($db->next_record())
array_push($alternc_sites, $db->f('site_id'));
}
get_alternc_users ( )

Definition at line 166 of file m_piwik.php.

References $alternc_users, $cuid, and $db.

Referenced by m_piwik().

{
global $db, $cuid;
static $alternc_users = array();
$db->query("SELECT login FROM piwik_users WHERE uid='$cuid'");
while ($db->next_record())
array_push($alternc_users, $db->f('login'));
}
get_site_access (   $user_login)

Definition at line 128 of file m_piwik.php.

References call_privileged_page().

{
return $this->call_privileged_page('API', 'UsersManager.getSitesAccessFromUser', array('userLogin' => $user_login));
}
get_site_list ( )

Definition at line 285 of file m_piwik.php.

References call_privileged_page().

{
return $this->call_privileged_page('API', 'SitesManager.getAllSites');
}
get_user (   $user_login)

Definition at line 157 of file m_piwik.php.

References call_privileged_page().

Referenced by user_add().

{
$api_data = $this->call_privileged_page('API', 'UsersManager.getUser', array('userLogin' => $user_login));
if ($api_data)
return $api_data[0];
else
return FALSE;
}
get_users_access_from_site (   $site_id)

Definition at line 132 of file m_piwik.php.

References $cuid, $err, $key, $user, and call_privileged_page().

{
global $err, $cuid;
if (!is_numeric($site_id)) {
$err->raise('piwik', 'site_id must be numeric');
return FALSE;
}
if (!in_array($site_id, $this->alternc_sites)) {
$err->raise('piwik', "you don't own this piwik website");
return FALSE;
}
$api_data = $this->call_privileged_page('API', 'UsersManager.getUsersAccessFromSite', array('idSite' => $site_id));
if ($api_data !== FALSE) {
$api_data = $api_data[0]; // Data is in the first column
foreach ($this->alternc_users AS $key=>$user) {
if (!array_key_exists($user, $api_data)) {
$api_data->$user = 'noaccess';
}
}
return $api_data;
}
else return FALSE;
}
hook_admin_del_member ( )

hook called when an AlternC account is deleted

Definition at line 66 of file m_piwik.php.

{
//FIXME : implement the hook_admin_del_member for piwik
return true;
}
hook_menu ( )

Definition at line 35 of file m_piwik.php.

{
global $quota;
if ( empty($this->piwik_server_uri) || empty($this->piwik_admin_token)) return false;
$obj = array(
'title' => _("Piwik statistics"),
'ico' => 'images/piwik.png',
'link' => 'toggle',
'pos' => 115,
'links' => array(
array( 'txt' => _("Piwik Users"), 'url' => 'piwik_userlist.php'),
array( 'txt' => _("Piwik Sites"), 'url' => 'piwik_sitelist.php'),
),
) ;
return $obj;
}
hook_quota_get ( )

Returns the used quota for the $name service for the current user.

Parameters
$namestring name of the quota
Returns
integer the number of service used or false if an error occured private

Definition at line 78 of file m_piwik.php.

References $cuid, $db, and $q.

{
global $db, $cuid;
$db->query("SELECT COUNT(id) AS nb FROM piwik_users WHERE uid='$cuid'");
$q=Array("name"=>"piwik", "description"=>_("Statistics through Piwik accounts"), "used"=>0);
if ($db->next_record()) {
$q['used']=$db->f('nb');
}
return $q;
}
m_piwik ( )

Constructor.

Definition at line 56 of file m_piwik.php.

References get_alternc_sites(), get_alternc_users(), and variable_get().

{
$this->piwik_server_uri=variable_get('piwik_server_uri',null,'Remote Piwik server uri');
$this->piwik_admin_token=variable_get('piwik_admin_token',null,'Remote Piwik super-admin token');
$this->alternc_users = $this->get_alternc_users();
$this->alternc_sites = $this->get_alternc_sites();
}
site_add (   $siteName,
  $urls,
  $ecommerce = FALSE 
)

Definition at line 291 of file m_piwik.php.

References call_privileged_page().

{
$urls = is_array($urls) ? implode(',', $urls) : $urls;
$api_data = $this->call_privileged_page('API', 'SitesManager.addSite', array('siteName' => $siteName, 'urls' => $urls));
printvar($api_data);
return TRUE;
}
site_alias_add ( )

Definition at line 338 of file m_piwik.php.

{
// FIXME
return true;
}
site_delete (   $site_id)

Definition at line 301 of file m_piwik.php.

References $cuid, $db, $err, and call_privileged_page().

{
global $db, $cuid, $err;
$db->query("SELECT COUNT(id) AS cnt FROM piwik_sites WHERE uid='$cuid' AND piwik_id='$site_id'");
$db->next_record();
if ($db->f('cnt') == 1) {
$api_data = $this->call_privileged_page('API', 'SitesManager.deleteSite', array('idSite' => $site_id));
if ($api_data->result == 'success') {
return $db->query("DELETE FROM piwik_sites where uid='$cuid' AND piwik_id='$site_id' LIMIT 1");
} else {
return FALSE;
}
} else {
$err->raise("piwik", _("You are not allowed to delete the statistics of this website"));
return FALSE;
}
return true;
}
site_js_tag (   $site_id)

Definition at line 270 of file m_piwik.php.

References call_privileged_page().

{
return $this->call_privileged_page('API', 'SitesManager.getJavascriptTag', array('idSite' => $site_id, 'piwikUrl' => $this->piwik_server_uri))->value;
}
site_list ( )

Definition at line 239 of file m_piwik.php.

References call_privileged_page().

{
$api_data = $this->call_privileged_page('API', 'SitesManager.getAllSites');
$data = array();
if($api_data) {
foreach ($api_data AS $site) {
if (!in_array($site->idsite, $this->alternc_sites))
continue;
$item = new stdClass();
$item->id = $site->idsite;
$item->name = $site->name;
$item->main_url = $site->main_url;
$user_data = $this->call_privileged_page('API', 'UsersManager.getUsersAccessFromSite', array('idSite' => $site->idsite));
//if (is_array($user_data)) {
// printvar($user_data);
//} else if(is_object($user_data)) {
$item->rights = $user_data[0];
//}
$data[] = $item;
}
return $data;
} else
return FALSE;
}
site_set_user_right (   $site_id,
  $login,
  $right 
)

Definition at line 324 of file m_piwik.php.

References $err, and call_privileged_page().

{
global $err;
if (!in_array($right, array('noaccess', 'view', 'admin')))
return FALSE;
$api_data = $this->call_privileged_page('API', 'UsersManager.setUserAccess', array('userLogin' => $login, 'access' => $right, 'idSites' => $site_id));
if ($api_data->result == 'success') {
return TRUE;
} else {
$err->raise('piwik', $api_data->messsage);
return FALSE;
}
}
url ( )

Definition at line 89 of file m_piwik.php.

References $piwik_server_uri.

user_access ( )

Definition at line 225 of file m_piwik.php.

{
// FIXME
return true;
}
user_add (   $user_login,
  $user_mail = null 
)

Definition at line 99 of file m_piwik.php.

References $cuid, $db, $err, $mem, $user, call_privileged_page(), clean_user_name(), create_pass(), and get_user().

{
global $db, $mem, $cuid, $err;
$user_login = $this->clean_user_name($user_login);
$user_pass = create_pass();
$user_mail = $user_mail ? $user_mail : $mem->user['mail'];
$user_mail = create_pass(4) . '@gmail.com'; // FIXME $user_mail; Unicité sur les emails ... Soit on ajoute + random soit, on prompt
$user_alias = $user_login;
$api_data = $this->call_privileged_page('API', 'UsersManager.addUser', array('userLogin' => $user_login, 'password' => $user_pass, 'email' => $user_mail, 'alias' => $user_alias), 'JSON');
if ($api_data) {
if ($api_data->result === 'success') {
$user = $this->get_user($user_login);
$user_creation_date = $user->date_registered;
return $db->query("INSERT INTO piwik_users (uid, login, created_date) VALUES ('$cuid', '$user_login', '$user_creation_date')");
}
} else { // api_data = false -> error is already filled
return FALSE;
}
}
user_checkremote (   $puser_id)

Definition at line 212 of file m_piwik.php.

{
//FIXME
return true;
}
user_delete (   $piwik_user_login)

Definition at line 178 of file m_piwik.php.

References $cuid, $db, $err, and call_privileged_page().

{
global $db, $cuid, $err;
$db->query("SELECT created_date, COUNT(id) AS cnt FROM piwik_users WHERE uid='$cuid' AND login='$piwik_user_login'");
$db->next_record();
if ($db->f('cnt') == 1) {
$api_data = $this->call_privileged_page('API', 'UsersManager.deleteUser', array('userLogin' => $piwik_user_login));
if ($api_data->result == 'success') {
return $db->query("DELETE FROM piwik_users WHERE uid='$cuid' AND login='$piwik_user_login'");
}
else {
return FALSE;
}
} else {
$err->raise("piwik", _("You are not allowed to delete the statistics of this website"));
return FALSE;
}
}
user_edit ( )

Definition at line 123 of file m_piwik.php.

{
//FIXME
return true;
}
user_remoteauth ( )

Definition at line 219 of file m_piwik.php.

{
//FIXME
return true;
}
users_list ( )

Definition at line 199 of file m_piwik.php.

References $cuid, $db, and call_privileged_page().

{
global $db, $cuid;
$db->query("SELECT login FROM piwik_users WHERE uid = '$cuid'");
if ($db->num_rows() == 0)
return array();
$users = '';
while ($db->next_record())
$users .= ($users !== '') ? ',' . $db->f('login') : $db->f('login');
return $this->call_privileged_page('API', 'UsersManager.getUsers', array('userLogins' => $users));
}

Field Documentation

$alternc_sites

Definition at line 33 of file m_piwik.php.

Referenced by get_alternc_sites().

$alternc_users

Definition at line 32 of file m_piwik.php.

Referenced by get_alternc_users().

$piwik_admin_token

Definition at line 31 of file m_piwik.php.

Referenced by call_privileged_page().

$piwik_server_uri

Definition at line 30 of file m_piwik.php.

Referenced by url().


The documentation for this class was generated from the following file: